[INFO] cloning repository https://github.com/yunnanwenshan/openclaw-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yunnanwenshan/openclaw-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyunnanwenshan%2Fopenclaw-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyunnanwenshan%2Fopenclaw-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 94fddb777678eb43fb8885fac06436f9f90c8cfe
[INFO] testing yunnanwenshan/openclaw-rs against try#b8e88e5ddf5521a9f43ee3f62a702388c713e4bb for pr-155114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyunnanwenshan%2Fopenclaw-rs" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/yunnanwenshan/openclaw-rs
[INFO] finished tweaking git repo https://github.com/yunnanwenshan/openclaw-rs
[INFO] tweaked toml for git repo https://github.com/yunnanwenshan/openclaw-rs written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/yunnanwenshan/openclaw-rs on toolchain b8e88e5ddf5521a9f43ee3f62a702388c713e4bb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/yunnanwenshan/openclaw-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f6674164616b17a8c72cdd495b8a90dcfa21fb6e914c030ba60b9a047c30e66e
[INFO] running `Command { std: "docker" "start" "-a" "f6674164616b17a8c72cdd495b8a90dcfa21fb6e914c030ba60b9a047c30e66e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f6674164616b17a8c72cdd495b8a90dcfa21fb6e914c030ba60b9a047c30e66e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f6674164616b17a8c72cdd495b8a90dcfa21fb6e914c030ba60b9a047c30e66e", kill_on_drop: false }`
[INFO] [stdout] f6674164616b17a8c72cdd495b8a90dcfa21fb6e914c030ba60b9a047c30e66e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 38c54cf8d77faa822a0155a66cb39fc16ad1c9eb1d68f3f981b7cd7599dc26af
[INFO] running `Command { std: "docker" "start" "-a" "38c54cf8d77faa822a0155a66cb39fc16ad1c9eb1d68f3f981b7cd7599dc26af", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling zerocopy v0.8.40
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling winnow v0.6.26
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling regex-lite v0.1.9
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tungstenite v0.21.0
[INFO] [stderr]    Compiling cron v0.15.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tokio-tungstenite v0.21.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling openclaw-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> src/model/azure.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::process::CommandExt`
[INFO] [stdout]    --> src/infra/daemon.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |     use std::os::unix::process::CommandExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/channel/feishu/client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeishuClient`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::client::{FeishuClient, IncomingMessage};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/channel/slack/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^ the name `Message` in the type namespace is first re-exported here
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ---------- but the name `Message` in the type namespace is also re-exported here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^ the name `User` in the type namespace is first re-exported here
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ---------- but the name `User` in the type namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ^^^^^^^^^^ the name `Attachment` in the type namespace is first re-exported here
[INFO] [stdout] 15 | pub use slack::*;
[INFO] [stdout]    |         -------- but the name `Attachment` in the type namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/gateway/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/cron.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut jobs = self.jobs.read().await;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/model/gemini.rs:104:13
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut gemini_request = GeminiRequest {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]   --> src/agent/tools/browser.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if let Some(ref m) = *manager {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/agent/tools/browser.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `script`
[INFO] [stdout]    --> src/browser/mod.rs:175:49
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_script`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/sessions.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/canvas.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/nodes.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bootstrap/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut load_file = |filename: &str, target: &mut String| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/daemon.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut child = Command::new(program)
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:53
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:70
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:123:80
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...load: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload_str`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let payload_str = serde_json::to_string(payload).unwrap_or_default();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url`
[INFO] [stdout]    --> src/channel/line/mod.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> src/metrics/mod.rs:175:38
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/model/minimax.rs:34:138
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stdout]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/model/minimax.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct MiniMaxMessageContent { role: String, content: String }
[INFO] [stdout]    |        ---------------------   ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxMessageContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `response_type` and `role` are never read
[INFO] [stdout]   --> src/model/anthropic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct AnthropicResponse {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     response_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 47 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnthropicResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content_type` is never read
[INFO] [stdout]   --> src/model/anthropic.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AnthropicResponseContent {
[INFO] [stdout]    |        ------------------------ field in this struct
[INFO] [stdout] 56 |     #[serde(rename = "type")]
[INFO] [stdout] 57 |     content_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnthropicResponseContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFStreamResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct HFStreamResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFToken` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct HFToken {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client` is never read
[INFO] [stdout]  --> src/agent/tools/web_search.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebSearchTool {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 8 |     client: reqwest::Client,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_path` is never read
[INFO] [stdout]  --> src/agent/tools/memory.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MemoryTool {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 9 |     memory_path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signing_secret` is never read
[INFO] [stdout]    --> src/channel/slack/mod.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SlackClient {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     signing_secret: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> src/model/azure.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ModelProviderRef` and `ModelProvider`
[INFO] [stdout]   --> src/model/mod.rs:16:20
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use provider::{ModelProvider, ModelProviderRef};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `web_fetch::WebFetchTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use web_fetch::WebFetchTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `web_search::WebSearchTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use web_search::WebSearchTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `message::MessageTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use message::MessageTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tts::TtsTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use tts::TtsTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::MemoryTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use memory::MemoryTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `browser::BrowserTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use browser::BrowserTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pdf::PdfTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use pdf::PdfTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::ImageTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use image::ImageTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sessions::SessionsTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub use sessions::SessionsTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `canvas::CanvasTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use canvas::CanvasTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nodes::NodesTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub use nodes::NodesTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToolContext`, `ToolError`, `ToolRef`, `ToolRegistry`, and `Tool`
[INFO] [stdout]  --> src/agent/mod.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use tools::{ToolRegistry, Tool, ToolContext, ToolRef, ToolError};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `file_storage::FileStorage`
[INFO] [stdout]   --> src/storage/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use file_storage::FileStorage;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/channel/feishu/client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeishuClient`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::client::{FeishuClient, IncomingMessage};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FeishuError` and `IncomingMessage`
[INFO] [stdout]  --> src/channel/feishu/mod.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use client::{FeishuClient, FeishuError, IncomingMessage};
[INFO] [stdout]   |                                ^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `handle_webhook`
[INFO] [stdout]  --> src/channel/feishu/mod.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use handler::{handle_webhook, parse_message_event};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/channel/slack/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `feishu::*`
[INFO] [stdout]   --> src/channel/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use feishu::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `telegram::*`
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `discord::*`
[INFO] [stdout]   --> src/channel/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `slack::*`
[INFO] [stdout]   --> src/channel/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use slack::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `whatsapp::*`
[INFO] [stdout]   --> src/channel/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use whatsapp::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `webhook::*`
[INFO] [stdout]   --> src/channel/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use webhook::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal::*`
[INFO] [stdout]   --> src/channel/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use signal::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `line::*`
[INFO] [stdout]   --> src/channel/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use line::*;
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::process::CommandExt`
[INFO] [stdout]    --> src/infra/daemon.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |     use std::os::unix::process::CommandExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cli::Cli`
[INFO] [stdout]  --> src/infra/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use cli::Cli;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cron::CronScheduler`
[INFO] [stdout]  --> src/infra/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use cron::CronScheduler;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `daemon::Daemon`
[INFO] [stdout]  --> src/infra/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use daemon::Daemon;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/gateway/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/cron.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut jobs = self.jobs.read().await;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/model/gemini.rs:104:13
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut gemini_request = GeminiRequest {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]   --> src/agent/tools/browser.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if let Some(ref m) = *manager {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/agent/tools/browser.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `script`
[INFO] [stdout]    --> src/browser/mod.rs:175:49
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_script`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/sessions.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/canvas.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/nodes.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:53
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:70
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:123:80
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...load: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload_str`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let payload_str = serde_json::to_string(payload).unwrap_or_default();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url`
[INFO] [stdout]    --> src/channel/line/mod.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bootstrap/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut load_file = |filename: &str, target: &mut String| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/daemon.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut child = Command::new(program)
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> src/metrics/mod.rs:175:38
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app_metrics`
[INFO] [stdout]    --> src/main.rs:344:9
[INFO] [stdout]     |
[INFO] [stdout] 344 |     let app_metrics = Arc::new(AppMetrics::new());
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_metrics`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WsState` is never constructed
[INFO] [stdout]   --> src/main.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct WsState {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/main.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl WsState {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 54 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `function` is never used
[INFO] [stdout]   --> src/model/types.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl ToolDefinition {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 71 |     pub fn function(name: impl Into<String>, description: impl Into<String>, parameters: serde_json::Value) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_streaming` is never used
[INFO] [stdout]    --> src/model/types.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl ChatRequest {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_streaming(mut self) -> Self { self.stream = Some(true); self }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingChunk` is never constructed
[INFO] [stdout]    --> src/model/types.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct StreamingChunk { pub delta: String, pub chunk_type: ChunkType, pub tool_call: Option<ToolCall>, pub reasoning: Option<St...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChunkType` is never used
[INFO] [stdout]    --> src/model/types.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum ChunkType { Content, ToolCall, Reasoning, Done }
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RateLimited`, `Timeout`, and `Unsupported` are never constructed
[INFO] [stdout]   --> src/model/error.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum ModelError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     RateLimited(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Timeout(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     Unsupported(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_retriable` is never used
[INFO] [stdout]   --> src/model/error.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ModelError {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 28 |     pub fn is_retriable(&self) -> bool { matches!(self, Self::RateLimited(_) | Self::Network(_) | Self::Timeout(_)) }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate`, `chat_streaming`, and `get_model` are never used
[INFO] [stdout]   --> src/model/provider.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub trait ModelProvider: Send + Sync {
[INFO] [stdout]    |           ------------- methods in this trait
[INFO] [stdout] 10 |     fn name(&self) -> &str;
[INFO] [stdout] 11 |     async fn validate(&self) -> Result<bool, ModelError>;
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 12 |     async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ModelError>;
[INFO] [stdout] 13 |     async fn chat_streaming(&self, request: ChatRequest, callback: Box<dyn Fn(StreamingChunk) + Send + Sync>) -> Result<ChatResponse...
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     fn supported_models(&self) -> Vec<ModelInfo>;
[INFO] [stdout] 15 |     fn get_model(&self, model_id: &str) -> Option<ModelInfo>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/model/minimax.rs:34:138
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stdout]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/model/minimax.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct MiniMaxMessageContent { role: String, content: String }
[INFO] [stdout]    |        ---------------------   ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxMessageContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicProvider` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AnthropicProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicRequest` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct AnthropicRequest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicMessage` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct AnthropicMessage {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicContent` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct AnthropicContent {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicResponse` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct AnthropicResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicResponseContent` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AnthropicResponseContent {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicUsage` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct AnthropicUsage {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `build_headers` are never used
[INFO] [stdout]   --> src/model/anthropic.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl AnthropicProvider {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 70 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     fn build_headers(&self) -> Result<HeaderMap, ModelError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiProvider` is never constructed
[INFO] [stdout]  --> src/model/gemini.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct GeminiProvider {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiRequest` is never constructed
[INFO] [stdout]   --> src/model/gemini.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | struct GeminiRequest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/model/gemini.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl GeminiProvider {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 27 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AzureOpenAIProvider` is never constructed
[INFO] [stdout]   --> src/model/azure.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AzureOpenAIProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build_url`, and `build_headers` are never used
[INFO] [stdout]   --> src/model/azure.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl AzureOpenAIProvider {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(api_key: String, endpoint: String, deployment_name: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn build_url(&self, path: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn build_headers(&self) -> HeaderMap {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HuggingFaceProvider` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct HuggingFaceProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFRequest` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct HFRequest {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFParameters` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct HFParameters {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct HFResponse {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFStreamResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct HFStreamResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFToken` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct HFToken {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `build_headers` are never used
[INFO] [stdout]   --> src/model/huggingface.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl HuggingFaceProvider {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 54 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn build_headers(&self) -> HeaderMap {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text` is never used
[INFO] [stdout]    --> src/model/huggingface.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn extract_text(content: &Content) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `feishu` and `web` are never used
[INFO] [stdout]    --> src/agent/types.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Channel {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout] 102 |     pub fn feishu(user_id: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn web(session_id: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ToolCalls` and `Mixed` are never constructed
[INFO] [stdout]    --> src/agent/types.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub enum AgentResponse {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] 122 |     Message(Message),
[INFO] [stdout] 123 |     ToolCalls(Vec<crate::model::ToolCall>),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 124 |     Mixed(Vec<ResponsePart>),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Text` and `ToolCall` are never constructed
[INFO] [stdout]    --> src/agent/types.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub enum ResponsePart {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] 129 |     Text(String),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 130 |     ToolCall(crate::model::ToolCall),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ResponsePart` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingAgentResponse` is never constructed
[INFO] [stdout]    --> src/agent/types.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct StreamingAgentResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Session`, `Tool`, `Aborted`, and `Config` are never constructed
[INFO] [stdout]    --> src/agent/types.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub enum AgentError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 147 |     Session(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     Tool(String),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     Aborted(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     Config(String),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `default_model` and `timeout_seconds` are never read
[INFO] [stdout]   --> src/agent/runtime.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct RuntimeConfig {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 18 |     pub default_model: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub timeout_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session_id` is never read
[INFO] [stdout]   --> src/agent/tools/mod.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 41 |     pub session_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `description` and `schema` are never used
[INFO] [stdout]   --> src/agent/tools/mod.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub trait Tool: Send + Sync {
[INFO] [stdout]    |           ---- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 68 |     fn description(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn schema(&self) -> Value;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_tools` is never used
[INFO] [stdout]    --> src/agent/tools/mod.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl ToolRegistry {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub async fn list_tools(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebFetchTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/web_fetch.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebFetchTool {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/web_fetch.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl WebFetchTool {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text` is never used
[INFO] [stdout]    --> src/agent/tools/web_fetch.rs:111:4
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn extract_text(html: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_markdown` is never used
[INFO] [stdout]    --> src/agent/tools/web_fetch.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn extract_markdown(html: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebSearchTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/web_search.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebSearchTool {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/web_search.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl WebSearchTool {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(api_key: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `brave_search` is never used
[INFO] [stdout]   --> src/agent/tools/web_search.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 92 | impl WebSearchTool {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 93 |     async fn brave_search(&self, query: &str, count: usize, freshness: &str, api_key: &str) -> ToolResult {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/message.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct MessageTool;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/message.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl MessageTool {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TtsTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/tts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TtsTool {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/tts.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TtsTool {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(provider: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/memory.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MemoryTool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/memory.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl MemoryTool {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(workspace: PathBuf) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrowserTool` is never constructed
[INFO] [stdout]   --> src/agent/tools/browser.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct BrowserTool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `init`, and `get_or_create_page` are never used
[INFO] [stdout]   --> src/agent/tools/browser.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl BrowserTool {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(config: BrowserConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub async fn init(&self) -> Result<(), String> {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     async fn get_or_create_page(&self) -> Result<String, ToolError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PdfTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/pdf.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct PdfTool {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/pdf.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PdfTool {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageTool {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/image.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ImageTool {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_url` is never used
[INFO] [stdout]    --> src/agent/tools/image.rs:166:14
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl ImageTool {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 166 |     async fn handle_url(&self, action: &str, url: &str, params: &Value) -> ToolResult {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionsTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/sessions.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct SessionsTool {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/sessions.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl SessionsTool {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CanvasTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/canvas.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct CanvasTool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/canvas.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl CanvasTool {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodesTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/nodes.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct NodesTool {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/nodes.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl NodesTool {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_message` is never used
[INFO] [stdout]    --> src/storage/mod.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl Storage {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn save_message(&self, session_id: &str, message: &Message) -> Result<(), rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `append_message` is never used
[INFO] [stdout]    --> src/storage/mod.rs:213:18
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl SessionManager {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub async fn append_message(&self, session_id: &str, message: &Message) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileStorage` is never constructed
[INFO] [stdout]  --> src/storage/file_storage.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct FileStorage {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/file_storage.rs:14:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl FileStorage {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  13 |     /// Create a new file storage with the given root directory
[INFO] [stdout]  14 |     pub fn new(root: PathBuf) -> io::Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn root(&self) -> &Path {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn read(&self, path: &Path) -> io::Result<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn write(&self, path: &Path, content: &str) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn delete(&self, path: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn list(&self, path: &Path) -> io::Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn exists(&self, path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn is_dir(&self, path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn metadata(&self, path: &Path) -> io::Result<fs::Metadata> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn copy(&self, from: &Path, to: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn move_file(&self, from: &Path, to: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn resolve(&self, path: &Path) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn relative(&self, path: &Path) -> Option<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FeishuEvent` is never used
[INFO] [stdout]   --> src/channel/feishu/client.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum FeishuEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UrlVerification` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct UrlVerification {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventCallback` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct EventCallback {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EventBody` is never used
[INFO] [stdout]   --> src/channel/feishu/client.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum EventBody {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageEvent` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct MessageEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageInfo` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct MessageInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SenderId` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct SenderId {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse_message` is never used
[INFO] [stdout]    --> src/channel/feishu/client.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl FeishuClient {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn parse_message(event: FeishuEvent) -> Option<IncomingMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_id` is never read
[INFO] [stdout]    --> src/channel/feishu/client.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct IncomingMessage {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub message_id: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IncomingMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Parse` is never constructed
[INFO] [stdout]    --> src/channel/feishu/client.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub enum FeishuError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 195 |     Parse(String),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeishuError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookRequest` is never constructed
[INFO] [stdout]   --> src/channel/feishu/handler.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct WebhookRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_webhook` is never used
[INFO] [stdout]   --> src/channel/feishu/handler.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub async fn handle_webhook(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TelegramMessage` is never constructed
[INFO] [stdout]  --> src/channel/telegram/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TelegramMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InlineKeyboardMarkup` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct InlineKeyboardMarkup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InlineKeyboardButton` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct InlineKeyboardButton {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Update` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Update {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Message` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct Message {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chat` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct Chat {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CallbackQuery` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct CallbackQuery {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TelegramClient` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct TelegramClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send_message`, `answer_callback_query`, and `set_webhook` are never used
[INFO] [stdout]    --> src/channel/telegram/mod.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl TelegramClient {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  78 |     pub fn new(bot_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub async fn send_message(&self, chat_id: i64, text: &str) -> Result<(), TelegramError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn answer_callback_query(&self, callback_query_id: &str, text: Option<&str>) -> Result<(), TelegramError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn set_webhook(&self, url: &str) -> Result<(), TelegramError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TelegramError` is never used
[INFO] [stdout]    --> src/channel/telegram/mod.rs:152:10
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub enum TelegramError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiscordMessage` is never constructed
[INFO] [stdout]  --> src/channel/discord/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct DiscordMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Embed` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Embed {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmbedField` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct EmbedField {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmbedFooter` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct EmbedFooter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Component` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct Component {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Interaction` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct Interaction {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionData` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct InteractionData {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResolvedData` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct ResolvedData {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Member` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct Member {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Message` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct Message {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attachment` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct Attachment {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiscordClient` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct DiscordClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send_message`, `send_text`, `create_interaction_response`, and `edit_original_response` are never used
[INFO] [stdout]    --> src/channel/discord/mod.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl DiscordClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 118 |     pub fn new(bot_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn send_message(&self, channel_id: &str, message: &DiscordMessage) -> Result<Message, DiscordError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn send_text(&self, channel_id: &str, text: &str) -> Result<Message, DiscordError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn create_interaction_response(&self, interaction_id: &str, token: &str, response: &InteractionResponse) -> Result<()...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub async fn edit_original_response(&self, token: &str, message: &DiscordMessage) -> Result<Message, DiscordError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionResponse` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub struct InteractionResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionResponseData` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub struct InteractionResponseData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DiscordError` is never used
[INFO] [stdout]    --> src/channel/discord/mod.rs:213:10
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub enum DiscordError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlackMessage` is never constructed
[INFO] [stdout]  --> src/channel/slack/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SlackMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Block` is never used
[INFO] [stdout]   --> src/channel/slack/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Block {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextObject` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct TextObject {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BlockElement` is never used
[INFO] [stdout]   --> src/channel/slack/mod.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum BlockElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionObject` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct OptionObject {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ContextElement` is never used
[INFO] [stdout]   --> src/channel/slack/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum ContextElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attachment` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Attachment {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Field` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct Field {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventCallback` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct EventCallback {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Event` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct Event {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageEvent` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct MessageEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractivePayload` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct InteractivePayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandPayload` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct CommandPayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlackClient` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SlackClient {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `chat_post_message`, `reply_thread`, and `verify_signature` are never used
[INFO] [stdout]    --> src/channel/slack/mod.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl SlackClient {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 140 |     pub fn new(bot_token: String, signing_secret: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn chat_post_message(&self, channel: &str, text: &str) -> Result<(), SlackError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn reply_thread(&self, channel: &str, thread_ts: &str, text: &str) -> Result<(), SlackError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SlackError` is never used
[INFO] [stdout]    --> src/channel/slack/mod.rs:229:10
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub enum SlackError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppMessage` is never constructed
[INFO] [stdout]  --> src/channel/whatsapp/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WhatsAppMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppText` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WhatsAppText {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppTemplate` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct WhatsAppTemplate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppLanguage` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct WhatsAppLanguage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppWebhook` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct WhatsAppWebhook {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppEntry` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct WhatsAppEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppChange` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct WhatsAppChange {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppValue` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct WhatsAppValue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppMetadata` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct WhatsAppMetadata {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppIncomingMessage` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct WhatsAppIncomingMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppTextBody` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct WhatsAppTextBody {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppMedia` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct WhatsAppMedia {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppClient` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct WhatsAppClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send_message`, `send_template`, and `parse_webhook` are never used
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl WhatsAppClient {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 111 |     pub fn new(phone_number_id: String, access_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn send_message(&self, to: &str, text: &str) -> Result<WhatsAppResponse, WhatsAppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn send_template(&self, to: &str, template_name: &str, language: &str) -> Result<WhatsAppResponse, WhatsAppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn parse_webhook(&self, payload: WhatsAppWebhook) -> Option<IncomingWhatsAppMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingWhatsAppMessage` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub struct IncomingWhatsAppMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppResponse` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub struct WhatsAppResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppContact` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct WhatsAppContact {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppSentMessage` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub struct WhatsAppSentMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WhatsAppError` is never used
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:247:10
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub enum WhatsAppError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookConfig` is never constructed
[INFO] [stdout]  --> src/channel/webhook/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct WebhookConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookParser` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct WebhookParser {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookPayload` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct WebhookPayload {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookMessage` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct WebhookMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_payload` is never used
[INFO] [stdout]   --> src/channel/webhook/mod.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl WebhookMessage {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 74 |     /// Parse from generic payload
[INFO] [stdout] 75 |     pub fn from_payload(payload: WebhookPayload, channel: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookClient` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct WebhookClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, and `send_with_auth` are never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl WebhookClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  93 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub async fn send(&self, url: &str, payload: &serde_json::Value) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub async fn send_with_auth(&self, url: &str, payload: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookErro...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookResponse` is never constructed
[INFO] [stdout]    --> src/channel/webhook/mod.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct WebhookResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WebhookError` is never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:174:10
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub enum WebhookError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_payload` is never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn parse_payload(data: &serde_json::Value, parser: &WebhookParser) -> Result<WebhookPayload, WebhookError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_json_path` is never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn extract_json_path(data: &serde_json::Value, path: &str) -> Option<serde_json::Value> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalMessage` is never constructed
[INFO] [stdout]  --> src/channel/signal/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct SignalMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalAttachment` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SignalAttachment {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalIncomingMessage` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct SignalIncomingMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalSource` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct SignalSource {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalClient` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct SignalClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, `send_to_group`, and `upload_attachment` are never used
[INFO] [stdout]    --> src/channel/signal/mod.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl SignalClient {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  55 |     pub fn new(auth_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub async fn send(&self, recipient: &str, message: &str) -> Result<SignalSendResponse, SignalError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn send_to_group(&self, group_id: &str, message: &str) -> Result<SignalSendResponse, SignalError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn upload_attachment(&self, data: &[u8], content_type: &str) -> Result<String, SignalError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalSendResponse` is never constructed
[INFO] [stdout]    --> src/channel/signal/mod.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct SignalSendResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SignalError` is never used
[INFO] [stdout]    --> src/channel/signal/mod.rs:151:10
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub enum SignalError {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineMessage` is never constructed
[INFO] [stdout]  --> src/channel/line/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct LineMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LinePushRequest` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct LinePushRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineReplyRequest` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct LineReplyRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineWebhook` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct LineWebhook {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineEvent` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct LineEvent {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineSource` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct LineSource {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineMessageEvent` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct LineMessageEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineClient` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct LineClient {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push_message`, `reply_message`, `get_profile`, and `set_webhook` are never used
[INFO] [stdout]    --> src/channel/line/mod.rs:74:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl LineClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  74 |     pub fn new(channel_access_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn push_message(&self, to: &str, text: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn reply_message(&self, reply_token: &str, text: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub async fn get_profile(&self, user_id: &str) -> Result<LineProfile, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineResponse` is never constructed
[INFO] [stdout]    --> src/channel/line/mod.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub struct LineResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineProfile` is never constructed
[INFO] [stdout]    --> src/channel/line/mod.rs:189:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub struct LineProfile {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LineError` is never used
[INFO] [stdout]    --> src/channel/line/mod.rs:198:10
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub enum LineError {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `save` and `from_env` are never used
[INFO] [stdout]   --> src/config/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Config {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn save(&self, path: &PathBuf) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn from_env() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BootstrapConfig` is never constructed
[INFO] [stdout]    --> src/config/mod.rs:252:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct BootstrapConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerConfig` is never constructed
[INFO] [stdout]    --> src/config/mod.rs:309:12
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub struct ServerConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Bootstrap` is never constructed
[INFO] [stdout]  --> src/bootstrap/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Bootstrap {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load_from_workspace` and `is_empty` are never used
[INFO] [stdout]   --> src/bootstrap/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Bootstrap {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 19 |     /// Load bootstrap files from workspace directory
[INFO] [stdout] 20 |     pub fn load_from_workspace(workspace: &PathBuf) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingHandler` is never constructed
[INFO] [stdout]  --> src/streaming/mod.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct StreamingHandler {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_chunk`, `get_text`, `get_tool_call`, and `clear` are never used
[INFO] [stdout]   --> src/streaming/mod.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl StreamingHandler {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn process_chunk(&mut self, chunk: StreamingChunk) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn get_text(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn get_tool_call(&self) -> Option<(String, String, String)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `StreamingCallback` is never used
[INFO] [stdout]   --> src/streaming/mod.rs:97:10
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub type StreamingCallback = Box<dyn Fn(StreamingChunk) + Send + Sync>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamCallback` is never constructed
[INFO] [stdout]    --> src/streaming/mod.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct StreamCallback {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `invoke` are never used
[INFO] [stdout]    --> src/streaming/mod.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl StreamCallback {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 105 |     pub fn new(callback: StreamingCallback) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn invoke(&self, chunk: StreamingChunk) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse_args` is never used
[INFO] [stdout]    --> src/infra/cli.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Cli {
[INFO] [stdout]     | -------- associated function in this implementation
[INFO] [stdout] 111 |     pub fn parse_args() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CronJob` is never constructed
[INFO] [stdout]   --> src/infra/cron.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct CronJob {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CronScheduler` is never constructed
[INFO] [stdout]   --> src/infra/cron.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CronScheduler {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/infra/cron.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl CronScheduler {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  27 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub async fn add(&self, id: String, expression: String, command: String) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub async fn remove(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub async fn enable(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub async fn disable(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn list(&self) -> Vec<CronJob> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn get_due_jobs(&self) -> Vec<CronJob> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub async fn mark_run(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_MINUTE` is never used
[INFO] [stdout]    --> src/infra/cron.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub const EVERY_MINUTE: &str = "* * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_5_MINUTES` is never used
[INFO] [stdout]    --> src/infra/cron.rs:129:15
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub const EVERY_5_MINUTES: &str = "*/5 * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_15_MINUTES` is never used
[INFO] [stdout]    --> src/infra/cron.rs:130:15
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub const EVERY_15_MINUTES: &str = "*/15 * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_HOUR` is never used
[INFO] [stdout]    --> src/infra/cron.rs:131:15
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub const EVERY_HOUR: &str = "0 * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_DAY_MIDNIGHT` is never used
[INFO] [stdout]    --> src/infra/cron.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub const EVERY_DAY_MIDNIGHT: &str = "0 0 * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_DAY_NOON` is never used
[INFO] [stdout]    --> src/infra/cron.rs:133:15
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub const EVERY_DAY_NOON: &str = "0 12 * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_WEEK_MONDAY` is never used
[INFO] [stdout]    --> src/infra/cron.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |     pub const EVERY_WEEK_MONDAY: &str = "0 0 * * 1";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_MONTH_FIRST` is never used
[INFO] [stdout]    --> src/infra/cron.rs:135:15
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub const EVERY_MONTH_FIRST: &str = "0 0 1 * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Daemon` is never constructed
[INFO] [stdout]  --> src/infra/daemon.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Daemon {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/infra/daemon.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl Daemon {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  15 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn with_pid_file(mut self, path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn with_log_file(mut self, path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn is_running(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn get_pid(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn start(&self, program: &str, args: &[&str]) -> Result<u32, DaemonError> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn stop(&self) -> Result<(), DaemonError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn restart(&self, program: &str, args: &[&str]) -> Result<u32, DaemonError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DaemonError` is never used
[INFO] [stdout]    --> src/infra/daemon.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub enum DaemonError {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kill` is never used
[INFO] [stdout]    --> src/infra/daemon.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn kill(pid: u32, signal: i32) -> Result<(), io::Error> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpSession` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AcpSession {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AcpSessionStatus` is never used
[INFO] [stdout]   --> src/acp/mod.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum AcpSessionStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpMessage` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct AcpMessage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpCreateRequest` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct AcpCreateRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpCreateResponse` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct AcpCreateResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpEvent` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct AcpEvent {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AcpEventType` is never used
[INFO] [stdout]   --> src/acp/mod.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub enum AcpEventType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpManager` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct AcpManager {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/acp/mod.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl AcpManager {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  79 |     pub fn new(max_concurrent: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub async fn create_session(&self, request: AcpCreateRequest) -> Result<AcpCreateResponse, AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub async fn get_session(&self, session_id: &str) -> Option<AcpSession> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn list_sessions(&self) -> Vec<AcpSession> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn update_status(&self, session_id: &str, status: AcpSessionStatus) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub async fn add_message(&self, session_id: &str, role: &str, content: &str) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub async fn delete_session(&self, session_id: &str) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn abort_session(&self, session_id: &str) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AcpError` is never used
[INFO] [stdout]    --> src/acp/mod.rs:188:10
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub enum AcpError {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrowserConfig` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BrowserConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyConfig` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct ProxyConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PageInfo` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct PageInfo {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenshotResult` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct ScreenshotResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ElementInfo` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct ElementInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BrowserError` is never used
[INFO] [stdout]   --> src/browser/mod.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum BrowserError {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrowserManager` is never constructed
[INFO] [stdout]    --> src/browser/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BrowserManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/browser/mod.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl BrowserManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 113 |     pub fn new(config: BrowserConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn init(&self) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn navigate(&self, page_id: &str, url: &str) -> Result<PageInfo, BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub async fn screenshot(&self, page_id: &str, full_page: bool) -> Result<ScreenshotResult, BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn click(&self, page_id: &str, selector: &str) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn type_text(&self, page_id: &str, selector: &str, text: &str) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn get_page(&self, page_id: &str) -> Option<PageInfo> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub async fn list_pages(&self) -> Vec<PageInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn close_page(&self, page_id: &str) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub async fn close(&self) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct GatewayConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TlsConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct TlsConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CorsConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct CorsConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct RateLimitConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebSocketConfig` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct WebSocketConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayState` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct GatewayState {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientInfo` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct ClientInfo {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayStats` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct GatewayStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_client`, `remove_client`, `update_activity`, `get_stats`, and `list_clients` are never used
[INFO] [stdout]    --> src/gateway/mod.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl GatewayState {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 148 |     pub fn new(config: GatewayConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub async fn add_client(&self, id: &str, ip: &str, channel: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn remove_client(&self, id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn update_activity(&self, id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub async fn get_stats(&self) -> GatewayStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub async fn list_clients(&self) -> Vec<ClientInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GatewayCommand` is never used
[INFO] [stdout]    --> src/gateway/mod.rs:206:10
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub enum GatewayCommand {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayResponse` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct GatewayResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `success`, `error`, and `with_data` are never used
[INFO] [stdout]    --> src/gateway/mod.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 231 | impl GatewayResponse {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 232 |     pub fn success(message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn error(message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn with_data(mut self, data: serde_json::Value) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]   --> src/metrics/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Metric {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub timestamp: i64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Metric` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `inc_counter`, `set_gauge`, `observe_histogram`, and `make_key` are never used
[INFO] [stdout]    --> src/metrics/mod.rs:38:18
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl MetricsCollector {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub async fn inc_counter(&self, name: &str, labels: Option<HashMap<String, String>>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub async fn set_gauge(&self, name: &str, value: f64, labels: Option<HashMap<String, String>>) {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn observe_histogram(&self, name: &str, value: f64, labels: Option<HashMap<String, String>>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn make_key(&self, name: &str, labels: &Option<HashMap<String, String>>) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/metrics/mod.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl AppMetrics {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn record_request(&self, method: &str, path: &str, status: u16) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn record_message(&self, channel: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub async fn record_tool(&self, tool: &str, success: bool) {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn record_session(&self, channel: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub async fn set_active_connections(&self, count: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn collector(&self) -> &MetricsCollector {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 33s
[INFO] running `Command { std: "docker" "inspect" "38c54cf8d77faa822a0155a66cb39fc16ad1c9eb1d68f3f981b7cd7599dc26af", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "38c54cf8d77faa822a0155a66cb39fc16ad1c9eb1d68f3f981b7cd7599dc26af", kill_on_drop: false }`
[INFO] [stdout] 38c54cf8d77faa822a0155a66cb39fc16ad1c9eb1d68f3f981b7cd7599dc26af
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 169f4921aa0eac3837f3aaff5be895874a46809d45eabce85f3c46a79e6b46ee
[INFO] running `Command { std: "docker" "start" "-a" "169f4921aa0eac3837f3aaff5be895874a46809d45eabce85f3c46a79e6b46ee", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tokio-tungstenite v0.21.0
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling openclaw-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> src/model/azure.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::process::CommandExt`
[INFO] [stdout]    --> src/infra/daemon.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |     use std::os::unix::process::CommandExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/channel/feishu/client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeishuClient`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::client::{FeishuClient, IncomingMessage};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/channel/slack/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^ the name `Message` in the type namespace is first re-exported here
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ---------- but the name `Message` in the type namespace is also re-exported here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^ the name `User` in the type namespace is first re-exported here
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ---------- but the name `User` in the type namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ^^^^^^^^^^ the name `Attachment` in the type namespace is first re-exported here
[INFO] [stdout] 15 | pub use slack::*;
[INFO] [stdout]    |         -------- but the name `Attachment` in the type namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/gateway/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> src/model/azure.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::process::CommandExt`
[INFO] [stdout]    --> src/infra/daemon.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |     use std::os::unix::process::CommandExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/channel/feishu/client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeishuClient`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::client::{FeishuClient, IncomingMessage};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/channel/slack/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^ the name `Message` in the type namespace is first re-exported here
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ---------- but the name `Message` in the type namespace is also re-exported here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^ the name `User` in the type namespace is first re-exported here
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ---------- but the name `User` in the type namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]   --> src/channel/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ^^^^^^^^^^ the name `Attachment` in the type namespace is first re-exported here
[INFO] [stdout] 15 | pub use slack::*;
[INFO] [stdout]    |         -------- but the name `Attachment` in the type namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/gateway/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]  --> src/tests/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     use super::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/cron.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut jobs = self.jobs.read().await;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/cron.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut jobs = self.jobs.read().await;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/model/gemini.rs:104:13
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut gemini_request = GeminiRequest {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]   --> src/agent/tools/browser.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if let Some(ref m) = *manager {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/agent/tools/browser.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `script`
[INFO] [stdout]    --> src/browser/mod.rs:175:49
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_script`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/sessions.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/canvas.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/model/gemini.rs:104:13
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut gemini_request = GeminiRequest {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/nodes.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bootstrap/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut load_file = |filename: &str, target: &mut String| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/daemon.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut child = Command::new(program)
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]   --> src/agent/tools/browser.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if let Some(ref m) = *manager {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/agent/tools/browser.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `script`
[INFO] [stdout]    --> src/browser/mod.rs:175:49
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_script`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/sessions.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/canvas.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/nodes.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bootstrap/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut load_file = |filename: &str, target: &mut String| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:53
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:70
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:123:80
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...load: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload_str`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let payload_str = serde_json::to_string(payload).unwrap_or_default();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/daemon.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut child = Command::new(program)
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url`
[INFO] [stdout]    --> src/channel/line/mod.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> src/metrics/mod.rs:175:38
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:53
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:70
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:123:80
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...load: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload_str`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let payload_str = serde_json::to_string(payload).unwrap_or_default();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/model/minimax.rs:34:138
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stdout]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/model/minimax.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct MiniMaxMessageContent { role: String, content: String }
[INFO] [stdout]    |        ---------------------   ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxMessageContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `response_type` and `role` are never read
[INFO] [stdout]   --> src/model/anthropic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct AnthropicResponse {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     response_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 47 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnthropicResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content_type` is never read
[INFO] [stdout]   --> src/model/anthropic.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AnthropicResponseContent {
[INFO] [stdout]    |        ------------------------ field in this struct
[INFO] [stdout] 56 |     #[serde(rename = "type")]
[INFO] [stdout] 57 |     content_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnthropicResponseContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFStreamResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct HFStreamResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFToken` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct HFToken {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client` is never read
[INFO] [stdout]  --> src/agent/tools/web_search.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebSearchTool {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 8 |     client: reqwest::Client,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_path` is never read
[INFO] [stdout]  --> src/agent/tools/memory.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MemoryTool {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 9 |     memory_path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signing_secret` is never read
[INFO] [stdout]    --> src/channel/slack/mod.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SlackClient {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     signing_secret: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url`
[INFO] [stdout]    --> src/channel/line/mod.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> src/metrics/mod.rs:175:38
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/model/minimax.rs:34:138
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stdout]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/model/minimax.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct MiniMaxMessageContent { role: String, content: String }
[INFO] [stdout]    |        ---------------------   ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxMessageContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `response_type` and `role` are never read
[INFO] [stdout]   --> src/model/anthropic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct AnthropicResponse {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     response_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 47 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnthropicResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content_type` is never read
[INFO] [stdout]   --> src/model/anthropic.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AnthropicResponseContent {
[INFO] [stdout]    |        ------------------------ field in this struct
[INFO] [stdout] 56 |     #[serde(rename = "type")]
[INFO] [stdout] 57 |     content_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnthropicResponseContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFStreamResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct HFStreamResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFToken` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct HFToken {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client` is never read
[INFO] [stdout]  --> src/agent/tools/web_search.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebSearchTool {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 8 |     client: reqwest::Client,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_path` is never read
[INFO] [stdout]  --> src/agent/tools/memory.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MemoryTool {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 9 |     memory_path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signing_secret` is never read
[INFO] [stdout]    --> src/channel/slack/mod.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SlackClient {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     signing_secret: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session_id` is never read
[INFO] [stdout]   --> examples/client.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | struct ChatResponse {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     session_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChatResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> src/model/azure.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ModelProviderRef` and `ModelProvider`
[INFO] [stdout]   --> src/model/mod.rs:16:20
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use provider::{ModelProvider, ModelProviderRef};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `web_fetch::WebFetchTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use web_fetch::WebFetchTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `web_search::WebSearchTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use web_search::WebSearchTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `message::MessageTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use message::MessageTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tts::TtsTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use tts::TtsTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::MemoryTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use memory::MemoryTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `browser::BrowserTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use browser::BrowserTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pdf::PdfTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use pdf::PdfTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::ImageTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use image::ImageTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sessions::SessionsTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub use sessions::SessionsTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `canvas::CanvasTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use canvas::CanvasTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nodes::NodesTool`
[INFO] [stdout]   --> src/agent/tools/mod.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub use nodes::NodesTool;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToolContext`, `ToolError`, `ToolRef`, `ToolRegistry`, and `Tool`
[INFO] [stdout]  --> src/agent/mod.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use tools::{ToolRegistry, Tool, ToolContext, ToolRef, ToolError};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `file_storage::FileStorage`
[INFO] [stdout]   --> src/storage/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use file_storage::FileStorage;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/channel/feishu/client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeishuClient`
[INFO] [stdout]  --> src/channel/feishu/handler.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::client::{FeishuClient, IncomingMessage};
[INFO] [stdout]   |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FeishuError` and `IncomingMessage`
[INFO] [stdout]  --> src/channel/feishu/mod.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use client::{FeishuClient, FeishuError, IncomingMessage};
[INFO] [stdout]   |                                ^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `handle_webhook`
[INFO] [stdout]  --> src/channel/feishu/mod.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use handler::{handle_webhook, parse_message_event};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/channel/slack/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `feishu::*`
[INFO] [stdout]   --> src/channel/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use feishu::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `telegram::*`
[INFO] [stdout]   --> src/channel/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use telegram::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `discord::*`
[INFO] [stdout]   --> src/channel/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use discord::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `slack::*`
[INFO] [stdout]   --> src/channel/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use slack::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `whatsapp::*`
[INFO] [stdout]   --> src/channel/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use whatsapp::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `webhook::*`
[INFO] [stdout]   --> src/channel/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use webhook::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal::*`
[INFO] [stdout]   --> src/channel/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use signal::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `line::*`
[INFO] [stdout]   --> src/channel/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use line::*;
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::process::CommandExt`
[INFO] [stdout]    --> src/infra/daemon.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |     use std::os::unix::process::CommandExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cli::Cli`
[INFO] [stdout]  --> src/infra/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use cli::Cli;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cron::CronScheduler`
[INFO] [stdout]  --> src/infra/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use cron::CronScheduler;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `daemon::Daemon`
[INFO] [stdout]  --> src/infra/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use daemon::Daemon;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/gateway/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/cron.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut jobs = self.jobs.read().await;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/model/gemini.rs:104:13
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut gemini_request = GeminiRequest {
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]   --> src/agent/tools/browser.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 |         if let Some(ref m) = *manager {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/agent/tools/browser.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `script`
[INFO] [stdout]    --> src/browser/mod.rs:175:49
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_script`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/sessions.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/canvas.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/agent/tools/nodes.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `signature`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:53
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> src/channel/slack/mod.rs:208:70
[INFO] [stdout]     |
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:123:80
[INFO] [stdout]     |
[INFO] [stdout] 123 | ...load: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload_str`
[INFO] [stdout]    --> src/channel/webhook/mod.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let payload_str = serde_json::to_string(payload).unwrap_or_default();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `url`
[INFO] [stdout]    --> src/channel/line/mod.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bootstrap/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut load_file = |filename: &str, target: &mut String| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/infra/daemon.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut child = Command::new(program)
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> src/metrics/mod.rs:175:38
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app_metrics`
[INFO] [stdout]    --> src/main.rs:344:9
[INFO] [stdout]     |
[INFO] [stdout] 344 |     let app_metrics = Arc::new(AppMetrics::new());
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_metrics`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WsState` is never constructed
[INFO] [stdout]   --> src/main.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | struct WsState {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/main.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl WsState {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 54 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `function` is never used
[INFO] [stdout]   --> src/model/types.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl ToolDefinition {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 71 |     pub fn function(name: impl Into<String>, description: impl Into<String>, parameters: serde_json::Value) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_streaming` is never used
[INFO] [stdout]    --> src/model/types.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl ChatRequest {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_streaming(mut self) -> Self { self.stream = Some(true); self }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingChunk` is never constructed
[INFO] [stdout]    --> src/model/types.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct StreamingChunk { pub delta: String, pub chunk_type: ChunkType, pub tool_call: Option<ToolCall>, pub reasoning: Option<St...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChunkType` is never used
[INFO] [stdout]    --> src/model/types.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum ChunkType { Content, ToolCall, Reasoning, Done }
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RateLimited`, `Timeout`, and `Unsupported` are never constructed
[INFO] [stdout]   --> src/model/error.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum ModelError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     RateLimited(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Timeout(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     Unsupported(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_retriable` is never used
[INFO] [stdout]   --> src/model/error.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ModelError {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 28 |     pub fn is_retriable(&self) -> bool { matches!(self, Self::RateLimited(_) | Self::Network(_) | Self::Timeout(_)) }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate`, `chat_streaming`, and `get_model` are never used
[INFO] [stdout]   --> src/model/provider.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub trait ModelProvider: Send + Sync {
[INFO] [stdout]    |           ------------- methods in this trait
[INFO] [stdout] 10 |     fn name(&self) -> &str;
[INFO] [stdout] 11 |     async fn validate(&self) -> Result<bool, ModelError>;
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 12 |     async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ModelError>;
[INFO] [stdout] 13 |     async fn chat_streaming(&self, request: ChatRequest, callback: Box<dyn Fn(StreamingChunk) + Send + Sync>) -> Result<ChatResponse...
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     fn supported_models(&self) -> Vec<ModelInfo>;
[INFO] [stdout] 15 |     fn get_model(&self, model_id: &str) -> Option<ModelInfo>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/model/minimax.rs:34:138
[INFO] [stdout]    |
[INFO] [stdout] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stdout]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/model/minimax.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct MiniMaxMessageContent { role: String, content: String }
[INFO] [stdout]    |        ---------------------   ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiniMaxMessageContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicProvider` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AnthropicProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicRequest` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct AnthropicRequest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicMessage` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct AnthropicMessage {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicContent` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct AnthropicContent {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicResponse` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct AnthropicResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicResponseContent` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct AnthropicResponseContent {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnthropicUsage` is never constructed
[INFO] [stdout]   --> src/model/anthropic.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct AnthropicUsage {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `build_headers` are never used
[INFO] [stdout]   --> src/model/anthropic.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl AnthropicProvider {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 70 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     fn build_headers(&self) -> Result<HeaderMap, ModelError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiProvider` is never constructed
[INFO] [stdout]  --> src/model/gemini.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct GeminiProvider {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiRequest` is never constructed
[INFO] [stdout]   --> src/model/gemini.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | struct GeminiRequest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/model/gemini.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl GeminiProvider {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 27 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AzureOpenAIProvider` is never constructed
[INFO] [stdout]   --> src/model/azure.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AzureOpenAIProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build_url`, and `build_headers` are never used
[INFO] [stdout]   --> src/model/azure.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl AzureOpenAIProvider {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(api_key: String, endpoint: String, deployment_name: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn build_url(&self, path: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn build_headers(&self) -> HeaderMap {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HuggingFaceProvider` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct HuggingFaceProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFRequest` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct HFRequest {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFParameters` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | struct HFParameters {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct HFResponse {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFStreamResponse` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct HFStreamResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HFToken` is never constructed
[INFO] [stdout]   --> src/model/huggingface.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct HFToken {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `build_headers` are never used
[INFO] [stdout]   --> src/model/huggingface.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl HuggingFaceProvider {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 54 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn build_headers(&self) -> HeaderMap {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text` is never used
[INFO] [stdout]    --> src/model/huggingface.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn extract_text(content: &Content) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `feishu` and `web` are never used
[INFO] [stdout]    --> src/agent/types.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Channel {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout] 102 |     pub fn feishu(user_id: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn web(session_id: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ToolCalls` and `Mixed` are never constructed
[INFO] [stdout]    --> src/agent/types.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub enum AgentResponse {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] 122 |     Message(Message),
[INFO] [stdout] 123 |     ToolCalls(Vec<crate::model::ToolCall>),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 124 |     Mixed(Vec<ResponsePart>),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Text` and `ToolCall` are never constructed
[INFO] [stdout]    --> src/agent/types.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub enum ResponsePart {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] 129 |     Text(String),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 130 |     ToolCall(crate::model::ToolCall),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ResponsePart` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingAgentResponse` is never constructed
[INFO] [stdout]    --> src/agent/types.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct StreamingAgentResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Session`, `Tool`, `Aborted`, and `Config` are never constructed
[INFO] [stdout]    --> src/agent/types.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub enum AgentError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 147 |     Session(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     Tool(String),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     Aborted(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     Config(String),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `default_model` and `timeout_seconds` are never read
[INFO] [stdout]   --> src/agent/runtime.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct RuntimeConfig {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 18 |     pub default_model: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub timeout_seconds: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session_id` is never read
[INFO] [stdout]   --> src/agent/tools/mod.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct ToolContext {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 41 |     pub session_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `description` and `schema` are never used
[INFO] [stdout]   --> src/agent/tools/mod.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub trait Tool: Send + Sync {
[INFO] [stdout]    |           ---- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 68 |     fn description(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn schema(&self) -> Value;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_tools` is never used
[INFO] [stdout]    --> src/agent/tools/mod.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl ToolRegistry {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub async fn list_tools(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebFetchTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/web_fetch.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebFetchTool {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/web_fetch.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl WebFetchTool {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text` is never used
[INFO] [stdout]    --> src/agent/tools/web_fetch.rs:111:4
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn extract_text(html: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_markdown` is never used
[INFO] [stdout]    --> src/agent/tools/web_fetch.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn extract_markdown(html: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebSearchTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/web_search.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WebSearchTool {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/web_search.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl WebSearchTool {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(api_key: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `brave_search` is never used
[INFO] [stdout]   --> src/agent/tools/web_search.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 92 | impl WebSearchTool {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 93 |     async fn brave_search(&self, query: &str, count: usize, freshness: &str, api_key: &str) -> ToolResult {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/message.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct MessageTool;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/message.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl MessageTool {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TtsTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/tts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TtsTool {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/tts.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TtsTool {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(provider: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/memory.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MemoryTool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/memory.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl MemoryTool {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(workspace: PathBuf) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrowserTool` is never constructed
[INFO] [stdout]   --> src/agent/tools/browser.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct BrowserTool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `init`, and `get_or_create_page` are never used
[INFO] [stdout]   --> src/agent/tools/browser.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl BrowserTool {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(config: BrowserConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub async fn init(&self) -> Result<(), String> {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     async fn get_or_create_page(&self) -> Result<String, ToolError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PdfTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/pdf.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct PdfTool {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/pdf.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PdfTool {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/image.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ImageTool {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/image.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ImageTool {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_url` is never used
[INFO] [stdout]    --> src/agent/tools/image.rs:166:14
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl ImageTool {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 166 |     async fn handle_url(&self, action: &str, url: &str, params: &Value) -> ToolResult {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionsTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/sessions.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct SessionsTool {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/sessions.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl SessionsTool {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CanvasTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/canvas.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct CanvasTool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/canvas.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl CanvasTool {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodesTool` is never constructed
[INFO] [stdout]  --> src/agent/tools/nodes.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct NodesTool {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/agent/tools/nodes.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl NodesTool {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_message` is never used
[INFO] [stdout]    --> src/storage/mod.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl Storage {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn save_message(&self, session_id: &str, message: &Message) -> Result<(), rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `append_message` is never used
[INFO] [stdout]    --> src/storage/mod.rs:213:18
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl SessionManager {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub async fn append_message(&self, session_id: &str, message: &Message) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/storage/file_storage.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl FileStorage {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn root(&self) -> &Path {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn list(&self, path: &Path) -> io::Result<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn is_dir(&self, path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn metadata(&self, path: &Path) -> io::Result<fs::Metadata> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn copy(&self, from: &Path, to: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn move_file(&self, from: &Path, to: &Path) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn resolve(&self, path: &Path) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn relative(&self, path: &Path) -> Option<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FeishuEvent` is never used
[INFO] [stdout]   --> src/channel/feishu/client.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum FeishuEvent {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UrlVerification` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct UrlVerification {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventCallback` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct EventCallback {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EventBody` is never used
[INFO] [stdout]   --> src/channel/feishu/client.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum EventBody {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageEvent` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct MessageEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageInfo` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct MessageInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SenderId` is never constructed
[INFO] [stdout]   --> src/channel/feishu/client.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct SenderId {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse_message` is never used
[INFO] [stdout]    --> src/channel/feishu/client.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl FeishuClient {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn parse_message(event: FeishuEvent) -> Option<IncomingMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message_id` is never read
[INFO] [stdout]    --> src/channel/feishu/client.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct IncomingMessage {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub message_id: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IncomingMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Parse` is never constructed
[INFO] [stdout]    --> src/channel/feishu/client.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub enum FeishuError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 195 |     Parse(String),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeishuError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookRequest` is never constructed
[INFO] [stdout]   --> src/channel/feishu/handler.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct WebhookRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_webhook` is never used
[INFO] [stdout]   --> src/channel/feishu/handler.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub async fn handle_webhook(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TelegramMessage` is never constructed
[INFO] [stdout]  --> src/channel/telegram/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TelegramMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InlineKeyboardMarkup` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct InlineKeyboardMarkup {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InlineKeyboardButton` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct InlineKeyboardButton {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Update` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Update {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Message` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct Message {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chat` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct Chat {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CallbackQuery` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct CallbackQuery {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TelegramClient` is never constructed
[INFO] [stdout]   --> src/channel/telegram/mod.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct TelegramClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send_message`, `answer_callback_query`, and `set_webhook` are never used
[INFO] [stdout]    --> src/channel/telegram/mod.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl TelegramClient {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  78 |     pub fn new(bot_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub async fn send_message(&self, chat_id: i64, text: &str) -> Result<(), TelegramError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn answer_callback_query(&self, callback_query_id: &str, text: Option<&str>) -> Result<(), TelegramError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn set_webhook(&self, url: &str) -> Result<(), TelegramError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TelegramError` is never used
[INFO] [stdout]    --> src/channel/telegram/mod.rs:152:10
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub enum TelegramError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiscordMessage` is never constructed
[INFO] [stdout]  --> src/channel/discord/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct DiscordMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Embed` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Embed {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmbedField` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct EmbedField {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EmbedFooter` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct EmbedFooter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Component` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct Component {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Interaction` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct Interaction {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionData` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct InteractionData {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResolvedData` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct ResolvedData {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Member` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct Member {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Message` is never constructed
[INFO] [stdout]   --> src/channel/discord/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct Message {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attachment` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct Attachment {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiscordClient` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct DiscordClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send_message`, `send_text`, `create_interaction_response`, and `edit_original_response` are never used
[INFO] [stdout]    --> src/channel/discord/mod.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl DiscordClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 118 |     pub fn new(bot_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub async fn send_message(&self, channel_id: &str, message: &DiscordMessage) -> Result<Message, DiscordError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn send_text(&self, channel_id: &str, text: &str) -> Result<Message, DiscordError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn create_interaction_response(&self, interaction_id: &str, token: &str, response: &InteractionResponse) -> Result<()...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub async fn edit_original_response(&self, token: &str, message: &DiscordMessage) -> Result<Message, DiscordError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionResponse` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub struct InteractionResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionResponseData` is never constructed
[INFO] [stdout]    --> src/channel/discord/mod.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub struct InteractionResponseData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DiscordError` is never used
[INFO] [stdout]    --> src/channel/discord/mod.rs:213:10
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub enum DiscordError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlackMessage` is never constructed
[INFO] [stdout]  --> src/channel/slack/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SlackMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Block` is never used
[INFO] [stdout]   --> src/channel/slack/mod.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Block {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextObject` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct TextObject {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BlockElement` is never used
[INFO] [stdout]   --> src/channel/slack/mod.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum BlockElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionObject` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct OptionObject {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ContextElement` is never used
[INFO] [stdout]   --> src/channel/slack/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum ContextElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attachment` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Attachment {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Field` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct Field {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventCallback` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct EventCallback {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Event` is never constructed
[INFO] [stdout]   --> src/channel/slack/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct Event {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageEvent` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct MessageEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractivePayload` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct InteractivePayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandPayload` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct CommandPayload {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlackClient` is never constructed
[INFO] [stdout]    --> src/channel/slack/mod.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SlackClient {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `chat_post_message`, `reply_thread`, and `verify_signature` are never used
[INFO] [stdout]    --> src/channel/slack/mod.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl SlackClient {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 140 |     pub fn new(bot_token: String, signing_secret: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn chat_post_message(&self, channel: &str, text: &str) -> Result<(), SlackError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn reply_thread(&self, channel: &str, thread_ts: &str, text: &str) -> Result<(), SlackError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SlackError` is never used
[INFO] [stdout]    --> src/channel/slack/mod.rs:229:10
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub enum SlackError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppMessage` is never constructed
[INFO] [stdout]  --> src/channel/whatsapp/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WhatsAppMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppText` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WhatsAppText {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppTemplate` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct WhatsAppTemplate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppLanguage` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct WhatsAppLanguage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppWebhook` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct WhatsAppWebhook {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppEntry` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct WhatsAppEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppChange` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct WhatsAppChange {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppValue` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct WhatsAppValue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppMetadata` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct WhatsAppMetadata {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppIncomingMessage` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct WhatsAppIncomingMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppTextBody` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct WhatsAppTextBody {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppMedia` is never constructed
[INFO] [stdout]   --> src/channel/whatsapp/mod.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct WhatsAppMedia {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppClient` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct WhatsAppClient {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send_message`, `send_template`, and `parse_webhook` are never used
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl WhatsAppClient {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 111 |     pub fn new(phone_number_id: String, access_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn send_message(&self, to: &str, text: &str) -> Result<WhatsAppResponse, WhatsAppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn send_template(&self, to: &str, template_name: &str, language: &str) -> Result<WhatsAppResponse, WhatsAppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn parse_webhook(&self, payload: WhatsAppWebhook) -> Option<IncomingWhatsAppMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingWhatsAppMessage` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub struct IncomingWhatsAppMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppResponse` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub struct WhatsAppResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppContact` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct WhatsAppContact {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhatsAppSentMessage` is never constructed
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub struct WhatsAppSentMessage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WhatsAppError` is never used
[INFO] [stdout]    --> src/channel/whatsapp/mod.rs:247:10
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub enum WhatsAppError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookConfig` is never constructed
[INFO] [stdout]  --> src/channel/webhook/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct WebhookConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookParser` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct WebhookParser {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookPayload` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct WebhookPayload {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookMessage` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct WebhookMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_payload` is never used
[INFO] [stdout]   --> src/channel/webhook/mod.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl WebhookMessage {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 74 |     /// Parse from generic payload
[INFO] [stdout] 75 |     pub fn from_payload(payload: WebhookPayload, channel: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookClient` is never constructed
[INFO] [stdout]   --> src/channel/webhook/mod.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct WebhookClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, and `send_with_auth` are never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl WebhookClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  93 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub async fn send(&self, url: &str, payload: &serde_json::Value) -> Result<WebhookResponse, WebhookError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub async fn send_with_auth(&self, url: &str, payload: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookErro...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookResponse` is never constructed
[INFO] [stdout]    --> src/channel/webhook/mod.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct WebhookResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WebhookError` is never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:174:10
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub enum WebhookError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_payload` is never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn parse_payload(data: &serde_json::Value, parser: &WebhookParser) -> Result<WebhookPayload, WebhookError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_json_path` is never used
[INFO] [stdout]    --> src/channel/webhook/mod.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn extract_json_path(data: &serde_json::Value, path: &str) -> Option<serde_json::Value> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalMessage` is never constructed
[INFO] [stdout]  --> src/channel/signal/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct SignalMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalAttachment` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SignalAttachment {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalIncomingMessage` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct SignalIncomingMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalSource` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct SignalSource {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalClient` is never constructed
[INFO] [stdout]   --> src/channel/signal/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct SignalClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, `send_to_group`, and `upload_attachment` are never used
[INFO] [stdout]    --> src/channel/signal/mod.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl SignalClient {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  55 |     pub fn new(auth_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub async fn send(&self, recipient: &str, message: &str) -> Result<SignalSendResponse, SignalError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn send_to_group(&self, group_id: &str, message: &str) -> Result<SignalSendResponse, SignalError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn upload_attachment(&self, data: &[u8], content_type: &str) -> Result<String, SignalError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalSendResponse` is never constructed
[INFO] [stdout]    --> src/channel/signal/mod.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct SignalSendResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SignalError` is never used
[INFO] [stdout]    --> src/channel/signal/mod.rs:151:10
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub enum SignalError {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineMessage` is never constructed
[INFO] [stdout]  --> src/channel/line/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct LineMessage {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LinePushRequest` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct LinePushRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineReplyRequest` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct LineReplyRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineWebhook` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct LineWebhook {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineEvent` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct LineEvent {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineSource` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct LineSource {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineMessageEvent` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct LineMessageEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineClient` is never constructed
[INFO] [stdout]   --> src/channel/line/mod.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct LineClient {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push_message`, `reply_message`, `get_profile`, and `set_webhook` are never used
[INFO] [stdout]    --> src/channel/line/mod.rs:74:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl LineClient {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  74 |     pub fn new(channel_access_token: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn push_message(&self, to: &str, text: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn reply_message(&self, reply_token: &str, text: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub async fn get_profile(&self, user_id: &str) -> Result<LineProfile, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineResponse` is never constructed
[INFO] [stdout]    --> src/channel/line/mod.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub struct LineResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineProfile` is never constructed
[INFO] [stdout]    --> src/channel/line/mod.rs:189:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub struct LineProfile {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LineError` is never used
[INFO] [stdout]    --> src/channel/line/mod.rs:198:10
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub enum LineError {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `save` and `from_env` are never used
[INFO] [stdout]   --> src/config/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Config {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn save(&self, path: &PathBuf) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn from_env() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BootstrapConfig` is never constructed
[INFO] [stdout]    --> src/config/mod.rs:252:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct BootstrapConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerConfig` is never constructed
[INFO] [stdout]    --> src/config/mod.rs:309:12
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub struct ServerConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamingHandler` is never constructed
[INFO] [stdout]  --> src/streaming/mod.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct StreamingHandler {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_chunk`, `get_text`, `get_tool_call`, and `clear` are never used
[INFO] [stdout]   --> src/streaming/mod.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl StreamingHandler {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn process_chunk(&mut self, chunk: StreamingChunk) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn get_text(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn get_tool_call(&self) -> Option<(String, String, String)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `StreamingCallback` is never used
[INFO] [stdout]   --> src/streaming/mod.rs:97:10
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub type StreamingCallback = Box<dyn Fn(StreamingChunk) + Send + Sync>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamCallback` is never constructed
[INFO] [stdout]    --> src/streaming/mod.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct StreamCallback {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `invoke` are never used
[INFO] [stdout]    --> src/streaming/mod.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl StreamCallback {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 105 |     pub fn new(callback: StreamingCallback) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn invoke(&self, chunk: StreamingChunk) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse_args` is never used
[INFO] [stdout]    --> src/infra/cli.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Cli {
[INFO] [stdout]     | -------- associated function in this implementation
[INFO] [stdout] 111 |     pub fn parse_args() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CronJob` is never constructed
[INFO] [stdout]   --> src/infra/cron.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct CronJob {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CronScheduler` is never constructed
[INFO] [stdout]   --> src/infra/cron.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CronScheduler {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/infra/cron.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl CronScheduler {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  27 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub async fn add(&self, id: String, expression: String, command: String) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub async fn remove(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub async fn enable(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub async fn disable(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn list(&self) -> Vec<CronJob> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn get_due_jobs(&self) -> Vec<CronJob> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub async fn mark_run(&self, id: &str) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_MINUTE` is never used
[INFO] [stdout]    --> src/infra/cron.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub const EVERY_MINUTE: &str = "* * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_5_MINUTES` is never used
[INFO] [stdout]    --> src/infra/cron.rs:129:15
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub const EVERY_5_MINUTES: &str = "*/5 * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_15_MINUTES` is never used
[INFO] [stdout]    --> src/infra/cron.rs:130:15
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub const EVERY_15_MINUTES: &str = "*/15 * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_HOUR` is never used
[INFO] [stdout]    --> src/infra/cron.rs:131:15
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub const EVERY_HOUR: &str = "0 * * * *";
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_DAY_MIDNIGHT` is never used
[INFO] [stdout]    --> src/infra/cron.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub const EVERY_DAY_MIDNIGHT: &str = "0 0 * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_DAY_NOON` is never used
[INFO] [stdout]    --> src/infra/cron.rs:133:15
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub const EVERY_DAY_NOON: &str = "0 12 * * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_WEEK_MONDAY` is never used
[INFO] [stdout]    --> src/infra/cron.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |     pub const EVERY_WEEK_MONDAY: &str = "0 0 * * 1";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVERY_MONTH_FIRST` is never used
[INFO] [stdout]    --> src/infra/cron.rs:135:15
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub const EVERY_MONTH_FIRST: &str = "0 0 1 * *";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Daemon` is never constructed
[INFO] [stdout]  --> src/infra/daemon.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Daemon {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/infra/daemon.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl Daemon {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  15 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn with_pid_file(mut self, path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn with_log_file(mut self, path: PathBuf) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn is_running(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn get_pid(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn start(&self, program: &str, args: &[&str]) -> Result<u32, DaemonError> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn stop(&self) -> Result<(), DaemonError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn restart(&self, program: &str, args: &[&str]) -> Result<u32, DaemonError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DaemonError` is never used
[INFO] [stdout]    --> src/infra/daemon.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub enum DaemonError {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kill` is never used
[INFO] [stdout]    --> src/infra/daemon.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn kill(pid: u32, signal: i32) -> Result<(), io::Error> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpSession` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AcpSession {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AcpSessionStatus` is never used
[INFO] [stdout]   --> src/acp/mod.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum AcpSessionStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpMessage` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct AcpMessage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpCreateRequest` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct AcpCreateRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpCreateResponse` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct AcpCreateResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpEvent` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct AcpEvent {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AcpEventType` is never used
[INFO] [stdout]   --> src/acp/mod.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub enum AcpEventType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AcpManager` is never constructed
[INFO] [stdout]   --> src/acp/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct AcpManager {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/acp/mod.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl AcpManager {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  79 |     pub fn new(max_concurrent: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub async fn create_session(&self, request: AcpCreateRequest) -> Result<AcpCreateResponse, AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub async fn get_session(&self, session_id: &str) -> Option<AcpSession> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn list_sessions(&self) -> Vec<AcpSession> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn update_status(&self, session_id: &str, status: AcpSessionStatus) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub async fn add_message(&self, session_id: &str, role: &str, content: &str) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub async fn delete_session(&self, session_id: &str) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn abort_session(&self, session_id: &str) -> Result<(), AcpError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AcpError` is never used
[INFO] [stdout]    --> src/acp/mod.rs:188:10
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub enum AcpError {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrowserConfig` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BrowserConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyConfig` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct ProxyConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PageInfo` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct PageInfo {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScreenshotResult` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct ScreenshotResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ElementInfo` is never constructed
[INFO] [stdout]   --> src/browser/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct ElementInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BrowserError` is never used
[INFO] [stdout]   --> src/browser/mod.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum BrowserError {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrowserManager` is never constructed
[INFO] [stdout]    --> src/browser/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BrowserManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/browser/mod.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl BrowserManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 113 |     pub fn new(config: BrowserConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn init(&self) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn navigate(&self, page_id: &str, url: &str) -> Result<PageInfo, BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub async fn screenshot(&self, page_id: &str, full_page: bool) -> Result<ScreenshotResult, BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn click(&self, page_id: &str, selector: &str) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn type_text(&self, page_id: &str, selector: &str, text: &str) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn get_page(&self, page_id: &str) -> Option<PageInfo> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub async fn list_pages(&self) -> Vec<PageInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn close_page(&self, page_id: &str) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub async fn close(&self) -> Result<(), BrowserError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct GatewayConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TlsConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct TlsConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CorsConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct CorsConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct RateLimitConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthConfig` is never constructed
[INFO] [stdout]   --> src/gateway/mod.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebSocketConfig` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct WebSocketConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayState` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct GatewayState {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientInfo` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct ClientInfo {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayStats` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct GatewayStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_client`, `remove_client`, `update_activity`, `get_stats`, and `list_clients` are never used
[INFO] [stdout]    --> src/gateway/mod.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl GatewayState {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 148 |     pub fn new(config: GatewayConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub async fn add_client(&self, id: &str, ip: &str, channel: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn remove_client(&self, id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn update_activity(&self, id: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub async fn get_stats(&self) -> GatewayStats {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub async fn list_clients(&self) -> Vec<ClientInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GatewayCommand` is never used
[INFO] [stdout]    --> src/gateway/mod.rs:206:10
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub enum GatewayCommand {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatewayResponse` is never constructed
[INFO] [stdout]    --> src/gateway/mod.rs:225:12
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct GatewayResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `success`, `error`, and `with_data` are never used
[INFO] [stdout]    --> src/gateway/mod.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 231 | impl GatewayResponse {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 232 |     pub fn success(message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn error(message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn with_data(mut self, data: serde_json::Value) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]   --> src/metrics/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Metric {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub timestamp: i64,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Metric` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `inc_counter`, `set_gauge`, `observe_histogram`, and `make_key` are never used
[INFO] [stdout]    --> src/metrics/mod.rs:38:18
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl MetricsCollector {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub async fn inc_counter(&self, name: &str, labels: Option<HashMap<String, String>>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub async fn set_gauge(&self, name: &str, value: f64, labels: Option<HashMap<String, String>>) {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn observe_histogram(&self, name: &str, value: f64, labels: Option<HashMap<String, String>>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn make_key(&self, name: &str, labels: &Option<HashMap<String, String>>) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/metrics/mod.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl AppMetrics {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn record_request(&self, method: &str, path: &str, status: u16) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn record_message(&self, channel: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub async fn record_tool(&self, tool: &str, success: bool) {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub async fn record_session(&self, channel: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub async fn set_active_connections(&self, count: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn collector(&self) -> &MetricsCollector {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 02s
[INFO] running `Command { std: "docker" "inspect" "169f4921aa0eac3837f3aaff5be895874a46809d45eabce85f3c46a79e6b46ee", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "169f4921aa0eac3837f3aaff5be895874a46809d45eabce85f3c46a79e6b46ee", kill_on_drop: false }`
[INFO] [stdout] 169f4921aa0eac3837f3aaff5be895874a46809d45eabce85f3c46a79e6b46ee
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 0e775f2df92ed948cae058aa1db7c49d96310a058953ec1a90355b3a929418ad
[INFO] running `Command { std: "docker" "start" "-a" "0e775f2df92ed948cae058aa1db7c49d96310a058953ec1a90355b3a929418ad", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `serde::Serialize`
[INFO] [stderr]  --> src/model/azure.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use serde::Serialize;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::os::unix::process::CommandExt`
[INFO] [stderr]    --> src/infra/daemon.rs:142:9
[INFO] [stderr]     |
[INFO] [stderr] 142 |     use std::os::unix::process::CommandExt;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `async_trait::async_trait`
[INFO] [stderr]  --> src/channel/feishu/client.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use async_trait::async_trait;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Serialize`
[INFO] [stderr]  --> src/channel/feishu/handler.rs:7:26
[INFO] [stderr]   |
[INFO] [stderr] 7 | use serde::{Deserialize, Serialize};
[INFO] [stderr]   |                          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `FeishuClient`
[INFO] [stderr]  --> src/channel/feishu/handler.rs:9:21
[INFO] [stderr]   |
[INFO] [stderr] 9 | use super::client::{FeishuClient, IncomingMessage};
[INFO] [stderr]   |                     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> src/channel/slack/mod.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: ambiguous glob re-exports
[INFO] [stderr]   --> src/channel/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use telegram::*;
[INFO] [stderr]    |         ^^^^^^^^^^^ the name `Message` in the type namespace is first re-exported here
[INFO] [stderr] 14 | pub use discord::*;
[INFO] [stderr]    |         ---------- but the name `Message` in the type namespace is also re-exported here
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: ambiguous glob re-exports
[INFO] [stderr]   --> src/channel/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use telegram::*;
[INFO] [stderr]    |         ^^^^^^^^^^^ the name `User` in the type namespace is first re-exported here
[INFO] [stderr] 14 | pub use discord::*;
[INFO] [stderr]    |         ---------- but the name `User` in the type namespace is also re-exported here
[INFO] [stderr] 
[INFO] [stderr] warning: ambiguous glob re-exports
[INFO] [stderr]   --> src/channel/mod.rs:14:9
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub use discord::*;
[INFO] [stderr]    |         ^^^^^^^^^^ the name `Attachment` in the type namespace is first re-exported here
[INFO] [stderr] 15 | pub use slack::*;
[INFO] [stderr]    |         -------- but the name `Attachment` in the type namespace is also re-exported here
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::SocketAddr`
[INFO] [stderr]  --> src/gateway/mod.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::net::SocketAddr;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/infra/cron.rs:91:13
[INFO] [stderr]    |
[INFO] [stderr] 91 |         let mut jobs = self.jobs.read().await;
[INFO] [stderr]    |             ----^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/model/gemini.rs:104:13
[INFO] [stderr]     |
[INFO] [stderr] 104 |         let mut gemini_request = GeminiRequest {
[INFO] [stderr]     |             ----^^^^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `m`
[INFO] [stderr]   --> src/agent/tools/browser.rs:42:21
[INFO] [stderr]    |
[INFO] [stderr] 42 |         if let Some(ref m) = *manager {
[INFO] [stderr]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/agent/tools/browser.rs:110:29
[INFO] [stderr]     |
[INFO] [stderr] 110 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stderr]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `script`
[INFO] [stderr]    --> src/browser/mod.rs:175:49
[INFO] [stderr]     |
[INFO] [stderr] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stderr]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_script`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]   --> src/agent/tools/sessions.rs:66:29
[INFO] [stderr]    |
[INFO] [stderr] 66 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stderr]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]   --> src/agent/tools/canvas.rs:70:29
[INFO] [stderr]    |
[INFO] [stderr] 70 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stderr]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]   --> src/agent/tools/nodes.rs:78:29
[INFO] [stderr]    |
[INFO] [stderr] 78 |     async fn execute(&self, ctx: &ToolContext, params: Value) -> ToolResult {
[INFO] [stderr]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/bootstrap/mod.rs:24:13
[INFO] [stderr]    |
[INFO] [stderr] 24 |         let mut load_file = |filename: &str, target: &mut String| {
[INFO] [stderr]    |             ----^^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/infra/daemon.rs:67:13
[INFO] [stderr]    |
[INFO] [stderr] 67 |         let mut child = Command::new(program)
[INFO] [stderr]    |             ----^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `signature`
[INFO] [stderr]    --> src/channel/slack/mod.rs:208:53
[INFO] [stderr]     |
[INFO] [stderr] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stderr]     |                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_signature`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `body`
[INFO] [stderr]    --> src/channel/slack/mod.rs:208:70
[INFO] [stderr]     |
[INFO] [stderr] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stderr]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `secret`
[INFO] [stderr]    --> src/channel/webhook/mod.rs:123:80
[INFO] [stderr]     |
[INFO] [stderr] 123 | ...load: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookError> {
[INFO] [stderr]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `payload_str`
[INFO] [stderr]    --> src/channel/webhook/mod.rs:132:13
[INFO] [stderr]     |
[INFO] [stderr] 132 |         let payload_str = serde_json::to_string(payload).unwrap_or_default();
[INFO] [stderr]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload_str`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `url`
[INFO] [stderr]    --> src/channel/line/mod.rs:160:37
[INFO] [stderr]     |
[INFO] [stderr] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stderr]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `model`
[INFO] [stderr]    --> src/metrics/mod.rs:175:38
[INFO] [stderr]     |
[INFO] [stderr] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stderr]     |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stderr] 
[INFO] [stderr] warning: field `finish_reason` is never read
[INFO] [stderr]   --> src/model/minimax.rs:34:138
[INFO] [stderr]    |
[INFO] [stderr] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stderr]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `role` is never read
[INFO] [stderr]   --> src/model/minimax.rs:40:32
[INFO] [stderr]    |
[INFO] [stderr] 40 | struct MiniMaxMessageContent { role: String, content: String }
[INFO] [stderr]    |        ---------------------   ^^^^
[INFO] [stderr]    |        |
[INFO] [stderr]    |        field in this struct
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MiniMaxMessageContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `response_type` and `role` are never read
[INFO] [stderr]   --> src/model/anthropic.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 43 | struct AnthropicResponse {
[INFO] [stderr]    |        ----------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 46 |     response_type: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 47 |     role: String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AnthropicResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `content_type` is never read
[INFO] [stderr]   --> src/model/anthropic.rs:57:5
[INFO] [stderr]    |
[INFO] [stderr] 55 | struct AnthropicResponseContent {
[INFO] [stderr]    |        ------------------------ field in this struct
[INFO] [stderr] 56 |     #[serde(rename = "type")]
[INFO] [stderr] 57 |     content_type: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AnthropicResponseContent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HFStreamResponse` is never constructed
[INFO] [stderr]   --> src/model/huggingface.rs:42:8
[INFO] [stderr]    |
[INFO] [stderr] 42 | struct HFStreamResponse {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HFToken` is never constructed
[INFO] [stderr]   --> src/model/huggingface.rs:48:8
[INFO] [stderr]    |
[INFO] [stderr] 48 | struct HFToken {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `client` is never read
[INFO] [stderr]  --> src/agent/tools/web_search.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct WebSearchTool {
[INFO] [stderr]   |            ------------- field in this struct
[INFO] [stderr] 8 |     client: reqwest::Client,
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `memory_path` is never read
[INFO] [stderr]  --> src/agent/tools/memory.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct MemoryTool {
[INFO] [stderr]   |            ---------- field in this struct
[INFO] [stderr] 9 |     memory_path: PathBuf,
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `signing_secret` is never read
[INFO] [stderr]    --> src/channel/slack/mod.rs:136:5
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub struct SlackClient {
[INFO] [stderr]     |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 136 |     signing_secret: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]  --> src/tests/mod.rs:5:9
[INFO] [stderr]   |
[INFO] [stderr] 5 |     use super::*;
[INFO] [stderr]   |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `openclaw-rs` (lib) generated 35 warnings (run `cargo fix --lib -p openclaw-rs` to apply 23 suggestions)
[INFO] [stderr] warning: `openclaw-rs` (lib test) generated 36 warnings (35 duplicates) (run `cargo fix --lib -p openclaw-rs --tests` to apply 1 suggestion)
[INFO] [stderr] warning: unused imports: `ModelProviderRef` and `ModelProvider`
[INFO] [stderr]   --> src/model/mod.rs:16:20
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub use provider::{ModelProvider, ModelProviderRef};
[INFO] [stderr]    |                    ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `web_fetch::WebFetchTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:26:9
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub use web_fetch::WebFetchTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `web_search::WebSearchTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:27:9
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub use web_search::WebSearchTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `message::MessageTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:28:9
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub use message::MessageTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tts::TtsTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:29:9
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub use tts::TtsTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `memory::MemoryTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:30:9
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub use memory::MemoryTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `browser::BrowserTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:31:9
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub use browser::BrowserTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `pdf::PdfTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub use pdf::PdfTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `image::ImageTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:33:9
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub use image::ImageTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sessions::SessionsTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub use sessions::SessionsTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `canvas::CanvasTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:35:9
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub use canvas::CanvasTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `nodes::NodesTool`
[INFO] [stderr]   --> src/agent/tools/mod.rs:36:9
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub use nodes::NodesTool;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ToolContext`, `ToolError`, `ToolRef`, `ToolRegistry`, and `Tool`
[INFO] [stderr]  --> src/agent/mod.rs:9:17
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use tools::{ToolRegistry, Tool, ToolContext, ToolRef, ToolError};
[INFO] [stderr]   |                 ^^^^^^^^^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `file_storage::FileStorage`
[INFO] [stderr]   --> src/storage/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use file_storage::FileStorage;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `FeishuError` and `IncomingMessage`
[INFO] [stderr]  --> src/channel/feishu/mod.rs:6:32
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub use client::{FeishuClient, FeishuError, IncomingMessage};
[INFO] [stderr]   |                                ^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `handle_webhook`
[INFO] [stderr]  --> src/channel/feishu/mod.rs:7:19
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use handler::{handle_webhook, parse_message_event};
[INFO] [stderr]   |                   ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `feishu::*`
[INFO] [stderr]   --> src/channel/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use feishu::*;
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `telegram::*`
[INFO] [stderr]   --> src/channel/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use telegram::*;
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `discord::*`
[INFO] [stderr]   --> src/channel/mod.rs:14:9
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub use discord::*;
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `slack::*`
[INFO] [stderr]   --> src/channel/mod.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub use slack::*;
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `whatsapp::*`
[INFO] [stderr]   --> src/channel/mod.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub use whatsapp::*;
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `webhook::*`
[INFO] [stderr]   --> src/channel/mod.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub use webhook::*;
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `signal::*`
[INFO] [stderr]   --> src/channel/mod.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub use signal::*;
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `line::*`
[INFO] [stderr]   --> src/channel/mod.rs:19:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub use line::*;
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `cli::Cli`
[INFO] [stderr]  --> src/infra/mod.rs:7:9
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use cli::Cli;
[INFO] [stderr]   |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `cron::CronScheduler`
[INFO] [stderr]  --> src/infra/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use cron::CronScheduler;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `daemon::Daemon`
[INFO] [stderr]  --> src/infra/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use daemon::Daemon;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `app_metrics`
[INFO] [stderr]    --> src/main.rs:344:9
[INFO] [stderr]     |
[INFO] [stderr] 344 |     let app_metrics = Arc::new(AppMetrics::new());
[INFO] [stderr]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_metrics`
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WsState` is never constructed
[INFO] [stderr]   --> src/main.rs:49:8
[INFO] [stderr]    |
[INFO] [stderr] 49 | struct WsState {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/main.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 53 | impl WsState {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 54 |     fn new() -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `function` is never used
[INFO] [stderr]   --> src/model/types.rs:71:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | impl ToolDefinition {
[INFO] [stderr]    | ------------------- associated function in this implementation
[INFO] [stderr] 71 |     pub fn function(name: impl Into<String>, description: impl Into<String>, parameters: serde_json::Value) -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `with_streaming` is never used
[INFO] [stderr]    --> src/model/types.rs:102:12
[INFO] [stderr]     |
[INFO] [stderr]  97 | impl ChatRequest {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub fn with_streaming(mut self) -> Self { self.stream = Some(true); self }
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamingChunk` is never constructed
[INFO] [stderr]    --> src/model/types.rs:122:12
[INFO] [stderr]     |
[INFO] [stderr] 122 | pub struct StreamingChunk { pub delta: String, pub chunk_type: ChunkType, pub tool_call: Option<ToolCall>, pub reasoning: Option<St...
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ChunkType` is never used
[INFO] [stderr]    --> src/model/types.rs:125:10
[INFO] [stderr]     |
[INFO] [stderr] 125 | pub enum ChunkType { Content, ToolCall, Reasoning, Done }
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `RateLimited`, `Timeout`, and `Unsupported` are never constructed
[INFO] [stderr]   --> src/model/error.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub enum ModelError {
[INFO] [stderr]    |          ---------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 14 |     RateLimited(String),
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 20 |     Timeout(String),
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     Unsupported(String),
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_retriable` is never used
[INFO] [stderr]   --> src/model/error.rs:28:12
[INFO] [stderr]    |
[INFO] [stderr] 27 | impl ModelError {
[INFO] [stderr]    | --------------- method in this implementation
[INFO] [stderr] 28 |     pub fn is_retriable(&self) -> bool { matches!(self, Self::RateLimited(_) | Self::Network(_) | Self::Timeout(_)) }
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `validate`, `chat_streaming`, and `get_model` are never used
[INFO] [stderr]   --> src/model/provider.rs:11:14
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub trait ModelProvider: Send + Sync {
[INFO] [stderr]    |           ------------- methods in this trait
[INFO] [stderr] 10 |     fn name(&self) -> &str;
[INFO] [stderr] 11 |     async fn validate(&self) -> Result<bool, ModelError>;
[INFO] [stderr]    |              ^^^^^^^^
[INFO] [stderr] 12 |     async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ModelError>;
[INFO] [stderr] 13 |     async fn chat_streaming(&self, request: ChatRequest, callback: Box<dyn Fn(StreamingChunk) + Send + Sync>) -> Result<ChatResponse...
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] 14 |     fn supported_models(&self) -> Vec<ModelInfo>;
[INFO] [stderr] 15 |     fn get_model(&self, model_id: &str) -> Option<ModelInfo>;
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `finish_reason` is never read
[INFO] [stderr]   --> src/model/minimax.rs:34:138
[INFO] [stderr]    |
[INFO] [stderr] 34 | ...ct MiniMaxResponse { id: String, model: String, choices: Vec<MiniMaxChoice>, usage: MiniMaxUsage, #[serde(rename = "finish_reason")] finish_reason: O...
[INFO] [stderr]    |       --------------- field in this struct                                                                                              ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MiniMaxResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicProvider` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct AnthropicProvider {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicRequest` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | struct AnthropicRequest {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicMessage` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:30:8
[INFO] [stderr]    |
[INFO] [stderr] 30 | struct AnthropicMessage {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicContent` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:36:8
[INFO] [stderr]    |
[INFO] [stderr] 36 | struct AnthropicContent {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicResponse` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:43:8
[INFO] [stderr]    |
[INFO] [stderr] 43 | struct AnthropicResponse {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicResponseContent` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:55:8
[INFO] [stderr]    |
[INFO] [stderr] 55 | struct AnthropicResponseContent {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnthropicUsage` is never constructed
[INFO] [stderr]   --> src/model/anthropic.rs:62:8
[INFO] [stderr]    |
[INFO] [stderr] 62 | struct AnthropicUsage {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `build_headers` are never used
[INFO] [stderr]   --> src/model/anthropic.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 69 | impl AnthropicProvider {
[INFO] [stderr]    | ---------------------- associated items in this implementation
[INFO] [stderr] 70 |     pub fn new(api_key: String) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 78 |     fn build_headers(&self) -> Result<HeaderMap, ModelError> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GeminiProvider` is never constructed
[INFO] [stderr]  --> src/model/gemini.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub struct GeminiProvider {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GeminiRequest` is never constructed
[INFO] [stderr]   --> src/model/gemini.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | struct GeminiRequest {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/model/gemini.rs:27:12
[INFO] [stderr]    |
[INFO] [stderr] 26 | impl GeminiProvider {
[INFO] [stderr]    | ------------------- associated function in this implementation
[INFO] [stderr] 27 |     pub fn new(api_key: String) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AzureOpenAIProvider` is never constructed
[INFO] [stderr]   --> src/model/azure.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct AzureOpenAIProvider {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `build_url`, and `build_headers` are never used
[INFO] [stderr]   --> src/model/azure.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl AzureOpenAIProvider {
[INFO] [stderr]    | ------------------------ associated items in this implementation
[INFO] [stderr] 19 |     pub fn new(api_key: String, endpoint: String, deployment_name: String) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     fn build_url(&self, path: &str) -> String {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     fn build_headers(&self) -> HeaderMap {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HuggingFaceProvider` is never constructed
[INFO] [stderr]   --> src/model/huggingface.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct HuggingFaceProvider {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HFRequest` is never constructed
[INFO] [stderr]   --> src/model/huggingface.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | struct HFRequest {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HFParameters` is never constructed
[INFO] [stderr]   --> src/model/huggingface.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 26 | struct HFParameters {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HFResponse` is never constructed
[INFO] [stderr]   --> src/model/huggingface.rs:36:8
[INFO] [stderr]    |
[INFO] [stderr] 36 | struct HFResponse {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `build_headers` are never used
[INFO] [stderr]   --> src/model/huggingface.rs:54:12
[INFO] [stderr]    |
[INFO] [stderr] 53 | impl HuggingFaceProvider {
[INFO] [stderr]    | ------------------------ associated items in this implementation
[INFO] [stderr] 54 |     pub fn new(api_key: String) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 62 |     fn build_headers(&self) -> HeaderMap {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_text` is never used
[INFO] [stderr]    --> src/model/huggingface.rs:157:4
[INFO] [stderr]     |
[INFO] [stderr] 157 | fn extract_text(content: &Content) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `feishu` and `web` are never used
[INFO] [stderr]    --> src/agent/types.rs:102:12
[INFO] [stderr]     |
[INFO] [stderr] 101 | impl Channel {
[INFO] [stderr]     | ------------ associated functions in this implementation
[INFO] [stderr] 102 |     pub fn feishu(user_id: impl Into<String>) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     pub fn web(session_id: impl Into<String>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `ToolCalls` and `Mixed` are never constructed
[INFO] [stderr]    --> src/agent/types.rs:123:5
[INFO] [stderr]     |
[INFO] [stderr] 121 | pub enum AgentResponse {
[INFO] [stderr]     |          ------------- variants in this enum
[INFO] [stderr] 122 |     Message(Message),
[INFO] [stderr] 123 |     ToolCalls(Vec<crate::model::ToolCall>),
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 124 |     Mixed(Vec<ResponsePart>),
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `AgentResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Text` and `ToolCall` are never constructed
[INFO] [stderr]    --> src/agent/types.rs:129:5
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub enum ResponsePart {
[INFO] [stderr]     |          ------------ variants in this enum
[INFO] [stderr] 129 |     Text(String),
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 130 |     ToolCall(crate::model::ToolCall),
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ResponsePart` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamingAgentResponse` is never constructed
[INFO] [stderr]    --> src/agent/types.rs:134:12
[INFO] [stderr]     |
[INFO] [stderr] 134 | pub struct StreamingAgentResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Session`, `Tool`, `Aborted`, and `Config` are never constructed
[INFO] [stderr]    --> src/agent/types.rs:147:5
[INFO] [stderr]     |
[INFO] [stderr] 142 | pub enum AgentError {
[INFO] [stderr]     |          ---------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 147 |     Session(String),
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 150 |     Tool(String),
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 156 |     Aborted(String),
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 159 |     Config(String),
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `default_model` and `timeout_seconds` are never read
[INFO] [stderr]   --> src/agent/runtime.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct RuntimeConfig {
[INFO] [stderr]    |            ------------- fields in this struct
[INFO] [stderr] 18 |     pub default_model: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub timeout_seconds: u64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `session_id` is never read
[INFO] [stderr]   --> src/agent/tools/mod.rs:41:9
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub struct ToolContext {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] 41 |     pub session_id: String,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ToolContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `description` and `schema` are never used
[INFO] [stderr]   --> src/agent/tools/mod.rs:68:8
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub trait Tool: Send + Sync {
[INFO] [stderr]    |           ---- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 68 |     fn description(&self) -> &str;
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 71 |     fn schema(&self) -> Value;
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `list_tools` is never used
[INFO] [stderr]    --> src/agent/tools/mod.rs:114:18
[INFO] [stderr]     |
[INFO] [stderr]  85 | impl ToolRegistry {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 114 |     pub async fn list_tools(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebFetchTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/web_fetch.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct WebFetchTool {
[INFO] [stderr]   |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/web_fetch.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl WebFetchTool {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] 12 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_text` is never used
[INFO] [stderr]    --> src/agent/tools/web_fetch.rs:111:4
[INFO] [stderr]     |
[INFO] [stderr] 111 | fn extract_text(html: &str) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_markdown` is never used
[INFO] [stderr]    --> src/agent/tools/web_fetch.rs:156:4
[INFO] [stderr]     |
[INFO] [stderr] 156 | fn extract_markdown(html: &str) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebSearchTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/web_search.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct WebSearchTool {
[INFO] [stderr]   |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/web_search.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl WebSearchTool {
[INFO] [stderr]    | ------------------ associated function in this implementation
[INFO] [stderr] 13 |     pub fn new(api_key: Option<String>) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `brave_search` is never used
[INFO] [stderr]   --> src/agent/tools/web_search.rs:93:14
[INFO] [stderr]    |
[INFO] [stderr] 92 | impl WebSearchTool {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] 93 |     async fn brave_search(&self, query: &str, count: usize, freshness: &str, api_key: &str) -> ToolResult {
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MessageTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/message.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct MessageTool;
[INFO] [stderr]   |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/message.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr]  9 | impl MessageTool {
[INFO] [stderr]    | ---------------- associated function in this implementation
[INFO] [stderr] 10 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TtsTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/tts.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct TtsTool {
[INFO] [stderr]   |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/tts.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl TtsTool {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 13 |     pub fn new(provider: Option<String>) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MemoryTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/memory.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct MemoryTool {
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/memory.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl MemoryTool {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] 13 |     pub fn new(workspace: PathBuf) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BrowserTool` is never constructed
[INFO] [stderr]   --> src/agent/tools/browser.rs:11:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct BrowserTool {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `init`, and `get_or_create_page` are never used
[INFO] [stderr]   --> src/agent/tools/browser.rs:17:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl BrowserTool {
[INFO] [stderr]    | ---------------- associated items in this implementation
[INFO] [stderr] 17 |     pub fn new(config: BrowserConfig) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub async fn init(&self) -> Result<(), String> {
[INFO] [stderr]    |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 40 |     async fn get_or_create_page(&self) -> Result<String, ToolError> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PdfTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/pdf.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct PdfTool {
[INFO] [stderr]   |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/pdf.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl PdfTool {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 13 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ImageTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/image.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct ImageTool {
[INFO] [stderr]   |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/image.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl ImageTool {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] 13 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `handle_url` is never used
[INFO] [stderr]    --> src/agent/tools/image.rs:166:14
[INFO] [stderr]     |
[INFO] [stderr] 165 | impl ImageTool {
[INFO] [stderr]     | -------------- method in this implementation
[INFO] [stderr] 166 |     async fn handle_url(&self, action: &str, url: &str, params: &Value) -> ToolResult {
[INFO] [stderr]     |              ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SessionsTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/sessions.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct SessionsTool {
[INFO] [stderr]   |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/sessions.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl SessionsTool {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] 12 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CanvasTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/canvas.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct CanvasTool {
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/canvas.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl CanvasTool {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] 12 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `NodesTool` is never constructed
[INFO] [stderr]  --> src/agent/tools/nodes.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct NodesTool {
[INFO] [stderr]   |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/agent/tools/nodes.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl NodesTool {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] 12 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `save_message` is never used
[INFO] [stderr]    --> src/storage/mod.rs:120:12
[INFO] [stderr]     |
[INFO] [stderr]  19 | impl Storage {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 120 |     pub fn save_message(&self, session_id: &str, message: &Message) -> Result<(), rusqlite::Error> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `append_message` is never used
[INFO] [stderr]    --> src/storage/mod.rs:213:18
[INFO] [stderr]     |
[INFO] [stderr] 183 | impl SessionManager {
[INFO] [stderr]     | ------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 213 |     pub async fn append_message(&self, session_id: &str, message: &Message) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/storage/file_storage.rs:22:12
[INFO] [stderr]     |
[INFO] [stderr]  12 | impl FileStorage {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  22 |     pub fn root(&self) -> &Path {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  56 |     pub fn list(&self, path: &Path) -> io::Result<Vec<PathBuf>> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  78 |     pub fn is_dir(&self, path: &Path) -> bool {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  83 |     pub fn metadata(&self, path: &Path) -> io::Result<fs::Metadata> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     pub fn copy(&self, from: &Path, to: &Path) -> io::Result<()> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub fn move_file(&self, from: &Path, to: &Path) -> io::Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |     pub fn resolve(&self, path: &Path) -> PathBuf {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub fn relative(&self, path: &Path) -> Option<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FeishuEvent` is never used
[INFO] [stderr]   --> src/channel/feishu/client.rs:10:10
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub enum FeishuEvent {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UrlVerification` is never constructed
[INFO] [stderr]   --> src/channel/feishu/client.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct UrlVerification {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EventCallback` is never constructed
[INFO] [stderr]   --> src/channel/feishu/client.rs:25:12
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub struct EventCallback {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `EventBody` is never used
[INFO] [stderr]   --> src/channel/feishu/client.rs:33:10
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub enum EventBody {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MessageEvent` is never constructed
[INFO] [stderr]   --> src/channel/feishu/client.rs:40:12
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub struct MessageEvent {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MessageInfo` is never constructed
[INFO] [stderr]   --> src/channel/feishu/client.rs:48:12
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct MessageInfo {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SenderId` is never constructed
[INFO] [stderr]   --> src/channel/feishu/client.rs:57:12
[INFO] [stderr]    |
[INFO] [stderr] 57 | pub struct SenderId {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `parse_message` is never used
[INFO] [stderr]    --> src/channel/feishu/client.rs:159:12
[INFO] [stderr]     |
[INFO] [stderr]  80 | impl FeishuClient {
[INFO] [stderr]     | ----------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 159 |     pub fn parse_message(event: FeishuEvent) -> Option<IncomingMessage> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `message_id` is never read
[INFO] [stderr]    --> src/channel/feishu/client.rs:182:9
[INFO] [stderr]     |
[INFO] [stderr] 179 | pub struct IncomingMessage {
[INFO] [stderr]     |            --------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 182 |     pub message_id: String,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `IncomingMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Parse` is never constructed
[INFO] [stderr]    --> src/channel/feishu/client.rs:195:5
[INFO] [stderr]     |
[INFO] [stderr] 187 | pub enum FeishuError {
[INFO] [stderr]     |          ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 195 |     Parse(String),
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `FeishuError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookRequest` is never constructed
[INFO] [stderr]   --> src/channel/feishu/handler.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct WebhookRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_webhook` is never used
[INFO] [stderr]   --> src/channel/feishu/handler.rs:21:14
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub async fn handle_webhook(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TelegramMessage` is never constructed
[INFO] [stderr]  --> src/channel/telegram/mod.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct TelegramMessage {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InlineKeyboardMarkup` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct InlineKeyboardMarkup {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InlineKeyboardButton` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct InlineKeyboardButton {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Update` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub struct Update {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Message` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub struct Message {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Chat` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:47:12
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub struct Chat {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `User` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:54:12
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub struct User {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CallbackQuery` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:63:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub struct CallbackQuery {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TelegramClient` is never constructed
[INFO] [stderr]   --> src/channel/telegram/mod.rs:71:12
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub struct TelegramClient {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `send_message`, `answer_callback_query`, and `set_webhook` are never used
[INFO] [stderr]    --> src/channel/telegram/mod.rs:78:12
[INFO] [stderr]     |
[INFO] [stderr]  77 | impl TelegramClient {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr]  78 |     pub fn new(bot_token: String) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  87 |     pub async fn send_message(&self, chat_id: i64, text: &str) -> Result<(), TelegramError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 110 |     pub async fn answer_callback_query(&self, callback_query_id: &str, text: Option<&str>) -> Result<(), TelegramError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 |     pub async fn set_webhook(&self, url: &str) -> Result<(), TelegramError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `TelegramError` is never used
[INFO] [stderr]    --> src/channel/telegram/mod.rs:152:10
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub enum TelegramError {
[INFO] [stderr]     |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DiscordMessage` is never constructed
[INFO] [stderr]  --> src/channel/discord/mod.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct DiscordMessage {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Embed` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct Embed {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EmbedField` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub struct EmbedField {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EmbedFooter` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct EmbedFooter {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Component` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub struct Component {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Interaction` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct Interaction {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InteractionData` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:61:12
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub struct InteractionData {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ResolvedData` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:68:12
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub struct ResolvedData {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `User` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub struct User {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Member` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:84:12
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub struct Member {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Message` is never constructed
[INFO] [stderr]   --> src/channel/discord/mod.rs:93:12
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub struct Message {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Attachment` is never constructed
[INFO] [stderr]    --> src/channel/discord/mod.rs:104:12
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub struct Attachment {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DiscordClient` is never constructed
[INFO] [stderr]    --> src/channel/discord/mod.rs:111:12
[INFO] [stderr]     |
[INFO] [stderr] 111 | pub struct DiscordClient {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `send_message`, `send_text`, `create_interaction_response`, and `edit_original_response` are never used
[INFO] [stderr]    --> src/channel/discord/mod.rs:118:12
[INFO] [stderr]     |
[INFO] [stderr] 117 | impl DiscordClient {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr] 118 |     pub fn new(bot_token: String) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 127 |     pub async fn send_message(&self, channel_id: &str, message: &DiscordMessage) -> Result<Message, DiscordError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub async fn send_text(&self, channel_id: &str, text: &str) -> Result<Message, DiscordError> {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 159 |     pub async fn create_interaction_response(&self, interaction_id: &str, token: &str, response: &InteractionResponse) -> Result<()...
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 177 |     pub async fn edit_original_response(&self, token: &str, message: &DiscordMessage) -> Result<Message, DiscordError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InteractionResponse` is never constructed
[INFO] [stderr]    --> src/channel/discord/mod.rs:197:12
[INFO] [stderr]     |
[INFO] [stderr] 197 | pub struct InteractionResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InteractionResponseData` is never constructed
[INFO] [stderr]    --> src/channel/discord/mod.rs:205:12
[INFO] [stderr]     |
[INFO] [stderr] 205 | pub struct InteractionResponseData {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DiscordError` is never used
[INFO] [stderr]    --> src/channel/discord/mod.rs:213:10
[INFO] [stderr]     |
[INFO] [stderr] 213 | pub enum DiscordError {
[INFO] [stderr]     |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SlackMessage` is never constructed
[INFO] [stderr]  --> src/channel/slack/mod.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct SlackMessage {
[INFO] [stderr]   |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Block` is never used
[INFO] [stderr]   --> src/channel/slack/mod.rs:20:10
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub enum Block {
[INFO] [stderr]    |          ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TextObject` is never constructed
[INFO] [stderr]   --> src/channel/slack/mod.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub struct TextObject {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `BlockElement` is never used
[INFO] [stderr]   --> src/channel/slack/mod.rs:40:10
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub enum BlockElement {
[INFO] [stderr]    |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `OptionObject` is never constructed
[INFO] [stderr]   --> src/channel/slack/mod.rs:48:12
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct OptionObject {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ContextElement` is never used
[INFO] [stderr]   --> src/channel/slack/mod.rs:56:10
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub enum ContextElement {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Attachment` is never constructed
[INFO] [stderr]   --> src/channel/slack/mod.rs:63:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub struct Attachment {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Field` is never constructed
[INFO] [stderr]   --> src/channel/slack/mod.rs:74:12
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub struct Field {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EventCallback` is never constructed
[INFO] [stderr]   --> src/channel/slack/mod.rs:82:12
[INFO] [stderr]    |
[INFO] [stderr] 82 | pub struct EventCallback {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Event` is never constructed
[INFO] [stderr]   --> src/channel/slack/mod.rs:93:12
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub struct Event {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MessageEvent` is never constructed
[INFO] [stderr]    --> src/channel/slack/mod.rs:107:12
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub struct MessageEvent {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InteractivePayload` is never constructed
[INFO] [stderr]    --> src/channel/slack/mod.rs:117:12
[INFO] [stderr]     |
[INFO] [stderr] 117 | pub struct InteractivePayload {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CommandPayload` is never constructed
[INFO] [stderr]    --> src/channel/slack/mod.rs:123:12
[INFO] [stderr]     |
[INFO] [stderr] 123 | pub struct CommandPayload {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SlackClient` is never constructed
[INFO] [stderr]    --> src/channel/slack/mod.rs:133:12
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub struct SlackClient {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `chat_post_message`, `reply_thread`, and `verify_signature` are never used
[INFO] [stderr]    --> src/channel/slack/mod.rs:140:12
[INFO] [stderr]     |
[INFO] [stderr] 139 | impl SlackClient {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 140 |     pub fn new(bot_token: String, signing_secret: String) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub async fn chat_post_message(&self, channel: &str, text: &str) -> Result<(), SlackError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 181 |     pub async fn reply_thread(&self, channel: &str, thread_ts: &str, text: &str) -> Result<(), SlackError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 208 |     pub fn verify_signature(&self, timestamp: &str, signature: &str, body: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SlackError` is never used
[INFO] [stderr]    --> src/channel/slack/mod.rs:229:10
[INFO] [stderr]     |
[INFO] [stderr] 229 | pub enum SlackError {
[INFO] [stderr]     |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppMessage` is never constructed
[INFO] [stderr]  --> src/channel/whatsapp/mod.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct WhatsAppMessage {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppText` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:18:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub struct WhatsAppText {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppTemplate` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub struct WhatsAppTemplate {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppLanguage` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:35:12
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub struct WhatsAppLanguage {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppWebhook` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub struct WhatsAppWebhook {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppEntry` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:48:12
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct WhatsAppEntry {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppChange` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:55:12
[INFO] [stderr]    |
[INFO] [stderr] 55 | pub struct WhatsAppChange {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppValue` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:62:12
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct WhatsAppValue {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppMetadata` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub struct WhatsAppMetadata {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppIncomingMessage` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub struct WhatsAppIncomingMessage {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppTextBody` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:90:12
[INFO] [stderr]    |
[INFO] [stderr] 90 | pub struct WhatsAppTextBody {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppMedia` is never constructed
[INFO] [stderr]   --> src/channel/whatsapp/mod.rs:96:12
[INFO] [stderr]    |
[INFO] [stderr] 96 | pub struct WhatsAppMedia {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppClient` is never constructed
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:103:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | pub struct WhatsAppClient {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `send_message`, `send_template`, and `parse_webhook` are never used
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:111:12
[INFO] [stderr]     |
[INFO] [stderr] 110 | impl WhatsAppClient {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 111 |     pub fn new(phone_number_id: String, access_token: String) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub async fn send_message(&self, to: &str, text: &str) -> Result<WhatsAppResponse, WhatsAppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     pub async fn send_template(&self, to: &str, template_name: &str, language: &str) -> Result<WhatsAppResponse, WhatsAppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub fn parse_webhook(&self, payload: WhatsAppWebhook) -> Option<IncomingWhatsAppMessage> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `IncomingWhatsAppMessage` is never constructed
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:218:12
[INFO] [stderr]     |
[INFO] [stderr] 218 | pub struct IncomingWhatsAppMessage {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppResponse` is never constructed
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:226:12
[INFO] [stderr]     |
[INFO] [stderr] 226 | pub struct WhatsAppResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppContact` is never constructed
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:234:12
[INFO] [stderr]     |
[INFO] [stderr] 234 | pub struct WhatsAppContact {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhatsAppSentMessage` is never constructed
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:241:12
[INFO] [stderr]     |
[INFO] [stderr] 241 | pub struct WhatsAppSentMessage {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `WhatsAppError` is never used
[INFO] [stderr]    --> src/channel/whatsapp/mod.rs:247:10
[INFO] [stderr]     |
[INFO] [stderr] 247 | pub enum WhatsAppError {
[INFO] [stderr]     |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookConfig` is never constructed
[INFO] [stderr]  --> src/channel/webhook/mod.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct WebhookConfig {
[INFO] [stderr]   |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookParser` is never constructed
[INFO] [stderr]   --> src/channel/webhook/mod.rs:32:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub struct WebhookParser {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookPayload` is never constructed
[INFO] [stderr]   --> src/channel/webhook/mod.rs:43:12
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub struct WebhookPayload {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookMessage` is never constructed
[INFO] [stderr]   --> src/channel/webhook/mod.rs:58:12
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub struct WebhookMessage {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_payload` is never used
[INFO] [stderr]   --> src/channel/webhook/mod.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 73 | impl WebhookMessage {
[INFO] [stderr]    | ------------------- associated function in this implementation
[INFO] [stderr] 74 |     /// Parse from generic payload
[INFO] [stderr] 75 |     pub fn from_payload(payload: WebhookPayload, channel: &str) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookClient` is never constructed
[INFO] [stderr]   --> src/channel/webhook/mod.rs:88:12
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub struct WebhookClient {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `send`, and `send_with_auth` are never used
[INFO] [stderr]    --> src/channel/webhook/mod.rs:93:12
[INFO] [stderr]     |
[INFO] [stderr]  92 | impl WebhookClient {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr]  93 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub async fn send(&self, url: &str, payload: &serde_json::Value) -> Result<WebhookResponse, WebhookError> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub async fn send_with_auth(&self, url: &str, payload: &serde_json::Value, secret: &str) -> Result<WebhookResponse, WebhookErro...
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebhookResponse` is never constructed
[INFO] [stderr]    --> src/channel/webhook/mod.rs:167:12
[INFO] [stderr]     |
[INFO] [stderr] 167 | pub struct WebhookResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `WebhookError` is never used
[INFO] [stderr]    --> src/channel/webhook/mod.rs:174:10
[INFO] [stderr]     |
[INFO] [stderr] 174 | pub enum WebhookError {
[INFO] [stderr]     |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_payload` is never used
[INFO] [stderr]    --> src/channel/webhook/mod.rs:186:8
[INFO] [stderr]     |
[INFO] [stderr] 186 | pub fn parse_payload(data: &serde_json::Value, parser: &WebhookParser) -> Result<WebhookPayload, WebhookError> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_json_path` is never used
[INFO] [stderr]    --> src/channel/webhook/mod.rs:210:4
[INFO] [stderr]     |
[INFO] [stderr] 210 | fn extract_json_path(data: &serde_json::Value, path: &str) -> Option<serde_json::Value> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SignalMessage` is never constructed
[INFO] [stderr]  --> src/channel/signal/mod.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct SignalMessage {
[INFO] [stderr]   |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SignalAttachment` is never constructed
[INFO] [stderr]   --> src/channel/signal/mod.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct SignalAttachment {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SignalIncomingMessage` is never constructed
[INFO] [stderr]   --> src/channel/signal/mod.rs:23:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct SignalIncomingMessage {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SignalSource` is never constructed
[INFO] [stderr]   --> src/channel/signal/mod.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub struct SignalSource {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SignalClient` is never constructed
[INFO] [stderr]   --> src/channel/signal/mod.rs:48:12
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct SignalClient {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `send`, `send_to_group`, and `upload_attachment` are never used
[INFO] [stderr]    --> src/channel/signal/mod.rs:55:12
[INFO] [stderr]     |
[INFO] [stderr]  54 | impl SignalClient {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr]  55 |     pub fn new(auth_token: String) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  64 |     pub async fn send(&self, recipient: &str, message: &str) -> Result<SignalSendResponse, SignalError> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  90 |     pub async fn send_to_group(&self, group_id: &str, message: &str) -> Result<SignalSendResponse, SignalError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub async fn upload_attachment(&self, data: &[u8], content_type: &str) -> Result<String, SignalError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SignalSendResponse` is never constructed
[INFO] [stderr]    --> src/channel/signal/mod.rs:145:12
[INFO] [stderr]     |
[INFO] [stderr] 145 | pub struct SignalSendResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SignalError` is never used
[INFO] [stderr]    --> src/channel/signal/mod.rs:151:10
[INFO] [stderr]     |
[INFO] [stderr] 151 | pub enum SignalError {
[INFO] [stderr]     |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineMessage` is never constructed
[INFO] [stderr]  --> src/channel/line/mod.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct LineMessage {
[INFO] [stderr]   |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LinePushRequest` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct LinePushRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineReplyRequest` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct LineReplyRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineWebhook` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct LineWebhook {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineEvent` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub struct LineEvent {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineSource` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct LineSource {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineMessageEvent` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:59:12
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub struct LineMessageEvent {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineClient` is never constructed
[INFO] [stderr]   --> src/channel/line/mod.rs:67:12
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub struct LineClient {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `push_message`, `reply_message`, `get_profile`, and `set_webhook` are never used
[INFO] [stderr]    --> src/channel/line/mod.rs:74:12
[INFO] [stderr]     |
[INFO] [stderr]  73 | impl LineClient {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  74 |     pub fn new(channel_access_token: String) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  83 |     pub async fn push_message(&self, to: &str, text: &str) -> Result<LineResponse, LineError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 112 |     pub async fn reply_message(&self, reply_token: &str, text: &str) -> Result<LineResponse, LineError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 141 |     pub async fn get_profile(&self, user_id: &str) -> Result<LineProfile, LineError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 160 |     pub async fn set_webhook(&self, url: &str) -> Result<LineResponse, LineError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineResponse` is never constructed
[INFO] [stderr]    --> src/channel/line/mod.rs:183:12
[INFO] [stderr]     |
[INFO] [stderr] 183 | pub struct LineResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LineProfile` is never constructed
[INFO] [stderr]    --> src/channel/line/mod.rs:189:12
[INFO] [stderr]     |
[INFO] [stderr] 189 | pub struct LineProfile {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `LineError` is never used
[INFO] [stderr]    --> src/channel/line/mod.rs:198:10
[INFO] [stderr]     |
[INFO] [stderr] 198 | pub enum LineError {
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `save` and `from_env` are never used
[INFO] [stderr]   --> src/config/mod.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | impl Config {
[INFO] [stderr]    | ----------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn save(&self, path: &PathBuf) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 64 |     pub fn from_env() -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BootstrapConfig` is never constructed
[INFO] [stderr]    --> src/config/mod.rs:252:12
[INFO] [stderr]     |
[INFO] [stderr] 252 | pub struct BootstrapConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ServerConfig` is never constructed
[INFO] [stderr]    --> src/config/mod.rs:309:12
[INFO] [stderr]     |
[INFO] [stderr] 309 | pub struct ServerConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamingHandler` is never constructed
[INFO] [stderr]  --> src/streaming/mod.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct StreamingHandler {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `process_chunk`, `get_text`, `get_tool_call`, and `clear` are never used
[INFO] [stderr]   --> src/streaming/mod.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl StreamingHandler {
[INFO] [stderr]    | --------------------- associated items in this implementation
[INFO] [stderr] 14 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     pub fn process_chunk(&mut self, chunk: StreamingChunk) -> Option<String> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 67 |     pub fn get_text(&self) -> &str {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 72 |     pub fn get_tool_call(&self) -> Option<(String, String, String)> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 |     pub fn clear(&mut self) {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `StreamingCallback` is never used
[INFO] [stderr]   --> src/streaming/mod.rs:97:10
[INFO] [stderr]    |
[INFO] [stderr] 97 | pub type StreamingCallback = Box<dyn Fn(StreamingChunk) + Send + Sync>;
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamCallback` is never constructed
[INFO] [stderr]    --> src/streaming/mod.rs:100:12
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub struct StreamCallback {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `invoke` are never used
[INFO] [stderr]    --> src/streaming/mod.rs:105:12
[INFO] [stderr]     |
[INFO] [stderr] 104 | impl StreamCallback {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 105 |     pub fn new(callback: StreamingCallback) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 |     pub fn invoke(&self, chunk: StreamingChunk) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `parse_args` is never used
[INFO] [stderr]    --> src/infra/cli.rs:111:12
[INFO] [stderr]     |
[INFO] [stderr] 110 | impl Cli {
[INFO] [stderr]     | -------- associated function in this implementation
[INFO] [stderr] 111 |     pub fn parse_args() -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CronJob` is never constructed
[INFO] [stderr]   --> src/infra/cron.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct CronJob {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CronScheduler` is never constructed
[INFO] [stderr]   --> src/infra/cron.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct CronScheduler {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/infra/cron.rs:27:12
[INFO] [stderr]     |
[INFO] [stderr]  26 | impl CronScheduler {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr]  27 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  34 |     pub async fn add(&self, id: String, expression: String, command: String) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr]  57 |     pub async fn remove(&self, id: &str) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  67 |     pub async fn enable(&self, id: &str) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  75 |     pub async fn disable(&self, id: &str) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  83 |     pub async fn list(&self) -> Vec<CronJob> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     pub async fn get_due_jobs(&self) -> Vec<CronJob> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub async fn mark_run(&self, id: &str) -> Result<(), String> {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_MINUTE` is never used
[INFO] [stderr]    --> src/infra/cron.rs:128:15
[INFO] [stderr]     |
[INFO] [stderr] 128 |     pub const EVERY_MINUTE: &str = "* * * * *";
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_5_MINUTES` is never used
[INFO] [stderr]    --> src/infra/cron.rs:129:15
[INFO] [stderr]     |
[INFO] [stderr] 129 |     pub const EVERY_5_MINUTES: &str = "*/5 * * * *";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_15_MINUTES` is never used
[INFO] [stderr]    --> src/infra/cron.rs:130:15
[INFO] [stderr]     |
[INFO] [stderr] 130 |     pub const EVERY_15_MINUTES: &str = "*/15 * * * *";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_HOUR` is never used
[INFO] [stderr]    --> src/infra/cron.rs:131:15
[INFO] [stderr]     |
[INFO] [stderr] 131 |     pub const EVERY_HOUR: &str = "0 * * * *";
[INFO] [stderr]     |               ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_DAY_MIDNIGHT` is never used
[INFO] [stderr]    --> src/infra/cron.rs:132:15
[INFO] [stderr]     |
[INFO] [stderr] 132 |     pub const EVERY_DAY_MIDNIGHT: &str = "0 0 * * *";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_DAY_NOON` is never used
[INFO] [stderr]    --> src/infra/cron.rs:133:15
[INFO] [stderr]     |
[INFO] [stderr] 133 |     pub const EVERY_DAY_NOON: &str = "0 12 * * *";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_WEEK_MONDAY` is never used
[INFO] [stderr]    --> src/infra/cron.rs:134:15
[INFO] [stderr]     |
[INFO] [stderr] 134 |     pub const EVERY_WEEK_MONDAY: &str = "0 0 * * 1";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVERY_MONTH_FIRST` is never used
[INFO] [stderr]    --> src/infra/cron.rs:135:15
[INFO] [stderr]     |
[INFO] [stderr] 135 |     pub const EVERY_MONTH_FIRST: &str = "0 0 1 * *";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Daemon` is never constructed
[INFO] [stderr]  --> src/infra/daemon.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub struct Daemon {
[INFO] [stderr]   |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/infra/daemon.rs:15:12
[INFO] [stderr]     |
[INFO] [stderr]  14 | impl Daemon {
[INFO] [stderr]     | ----------- associated items in this implementation
[INFO] [stderr]  15 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  23 |     pub fn with_pid_file(mut self, path: PathBuf) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  29 |     pub fn with_log_file(mut self, path: PathBuf) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  35 |     pub fn is_running(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  49 |     pub fn get_pid(&self) -> Option<u32> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  61 |     pub fn start(&self, program: &str, args: &[&str]) -> Result<u32, DaemonError> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  92 |     pub fn stop(&self) -> Result<(), DaemonError> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub fn restart(&self, program: &str, args: &[&str]) -> Result<u32, DaemonError> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DaemonError` is never used
[INFO] [stderr]    --> src/infra/daemon.rs:119:10
[INFO] [stderr]     |
[INFO] [stderr] 119 | pub enum DaemonError {
[INFO] [stderr]     |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `kill` is never used
[INFO] [stderr]    --> src/infra/daemon.rs:141:4
[INFO] [stderr]     |
[INFO] [stderr] 141 | fn kill(pid: u32, signal: i32) -> Result<(), io::Error> {
[INFO] [stderr]     |    ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AcpSession` is never constructed
[INFO] [stderr]   --> src/acp/mod.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct AcpSession {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AcpSessionStatus` is never used
[INFO] [stderr]   --> src/acp/mod.rs:21:10
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub enum AcpSessionStatus {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AcpMessage` is never constructed
[INFO] [stderr]   --> src/acp/mod.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub struct AcpMessage {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AcpCreateRequest` is never constructed
[INFO] [stderr]   --> src/acp/mod.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub struct AcpCreateRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AcpCreateResponse` is never constructed
[INFO] [stderr]   --> src/acp/mod.rs:47:12
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub struct AcpCreateResponse {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AcpEvent` is never constructed
[INFO] [stderr]   --> src/acp/mod.rs:54:12
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub struct AcpEvent {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AcpEventType` is never used
[INFO] [stderr]   --> src/acp/mod.rs:62:10
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub enum AcpEventType {
[INFO] [stderr]    |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AcpManager` is never constructed
[INFO] [stderr]   --> src/acp/mod.rs:73:12
[INFO] [stderr]    |
[INFO] [stderr] 73 | pub struct AcpManager {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/acp/mod.rs:79:12
[INFO] [stderr]     |
[INFO] [stderr]  78 | impl AcpManager {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  79 |     pub fn new(max_concurrent: usize) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  87 |     pub async fn create_session(&self, request: AcpCreateRequest) -> Result<AcpCreateResponse, AcpError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 126 |     pub async fn get_session(&self, session_id: &str) -> Option<AcpSession> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 132 |     pub async fn list_sessions(&self) -> Vec<AcpSession> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 138 |     pub async fn update_status(&self, session_id: &str, status: AcpSessionStatus) -> Result<(), AcpError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 150 |     pub async fn add_message(&self, session_id: &str, role: &str, content: &str) -> Result<(), AcpError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     pub async fn delete_session(&self, session_id: &str) -> Result<(), AcpError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 175 |     pub async fn abort_session(&self, session_id: &str) -> Result<(), AcpError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AcpError` is never used
[INFO] [stderr]    --> src/acp/mod.rs:188:10
[INFO] [stderr]     |
[INFO] [stderr] 188 | pub enum AcpError {
[INFO] [stderr]     |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BrowserConfig` is never constructed
[INFO] [stderr]   --> src/browser/mod.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct BrowserConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProxyConfig` is never constructed
[INFO] [stderr]   --> src/browser/mod.rs:46:12
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub struct ProxyConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PageInfo` is never constructed
[INFO] [stderr]   --> src/browser/mod.rs:54:12
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub struct PageInfo {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ScreenshotResult` is never constructed
[INFO] [stderr]   --> src/browser/mod.rs:62:12
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct ScreenshotResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ElementInfo` is never constructed
[INFO] [stderr]   --> src/browser/mod.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub struct ElementInfo {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `BrowserError` is never used
[INFO] [stderr]   --> src/browser/mod.rs:80:10
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub enum BrowserError {
[INFO] [stderr]    |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BrowserManager` is never constructed
[INFO] [stderr]    --> src/browser/mod.rs:106:12
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub struct BrowserManager {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/browser/mod.rs:113:12
[INFO] [stderr]     |
[INFO] [stderr] 112 | impl BrowserManager {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 113 |     pub fn new(config: BrowserConfig) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub async fn init(&self) -> Result<(), BrowserError> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 |     pub async fn navigate(&self, page_id: &str, url: &str) -> Result<PageInfo, BrowserError> {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 151 |     pub async fn screenshot(&self, page_id: &str, full_page: bool) -> Result<ScreenshotResult, BrowserError> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 163 |     pub async fn click(&self, page_id: &str, selector: &str) -> Result<(), BrowserError> {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 169 |     pub async fn type_text(&self, page_id: &str, selector: &str, text: &str) -> Result<(), BrowserError> {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 175 |     pub async fn evaluate(&self, page_id: &str, script: &str) -> Result<String, BrowserError> {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 181 |     pub async fn get_page(&self, page_id: &str) -> Option<PageInfo> {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 187 |     pub async fn list_pages(&self) -> Vec<PageInfo> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 193 |     pub async fn close_page(&self, page_id: &str) -> Result<(), BrowserError> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 206 |     pub async fn close(&self) -> Result<(), BrowserError> {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GatewayConfig` is never constructed
[INFO] [stderr]   --> src/gateway/mod.rs:11:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct GatewayConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TlsConfig` is never constructed
[INFO] [stderr]   --> src/gateway/mod.rs:43:12
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub struct TlsConfig {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CorsConfig` is never constructed
[INFO] [stderr]   --> src/gateway/mod.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct CorsConfig {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RateLimitConfig` is never constructed
[INFO] [stderr]   --> src/gateway/mod.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub struct RateLimitConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AuthConfig` is never constructed
[INFO] [stderr]   --> src/gateway/mod.rs:87:12
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub struct AuthConfig {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WebSocketConfig` is never constructed
[INFO] [stderr]    --> src/gateway/mod.rs:104:12
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub struct WebSocketConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GatewayState` is never constructed
[INFO] [stderr]    --> src/gateway/mod.rs:123:12
[INFO] [stderr]     |
[INFO] [stderr] 123 | pub struct GatewayState {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ClientInfo` is never constructed
[INFO] [stderr]    --> src/gateway/mod.rs:130:12
[INFO] [stderr]     |
[INFO] [stderr] 130 | pub struct ClientInfo {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GatewayStats` is never constructed
[INFO] [stderr]    --> src/gateway/mod.rs:139:12
[INFO] [stderr]     |
[INFO] [stderr] 139 | pub struct GatewayStats {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_client`, `remove_client`, `update_activity`, `get_stats`, and `list_clients` are never used
[INFO] [stderr]    --> src/gateway/mod.rs:148:12
[INFO] [stderr]     |
[INFO] [stderr] 147 | impl GatewayState {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr] 148 |     pub fn new(config: GatewayConfig) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub async fn add_client(&self, id: &str, ip: &str, channel: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 175 |     pub async fn remove_client(&self, id: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub async fn update_activity(&self, id: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 192 |     pub async fn get_stats(&self) -> GatewayStats {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 198 |     pub async fn list_clients(&self) -> Vec<ClientInfo> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `GatewayCommand` is never used
[INFO] [stderr]    --> src/gateway/mod.rs:206:10
[INFO] [stderr]     |
[INFO] [stderr] 206 | pub enum GatewayCommand {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GatewayResponse` is never constructed
[INFO] [stderr]    --> src/gateway/mod.rs:225:12
[INFO] [stderr]     |
[INFO] [stderr] 225 | pub struct GatewayResponse {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `success`, `error`, and `with_data` are never used
[INFO] [stderr]    --> src/gateway/mod.rs:232:12
[INFO] [stderr]     |
[INFO] [stderr] 231 | impl GatewayResponse {
[INFO] [stderr]     | -------------------- associated items in this implementation
[INFO] [stderr] 232 |     pub fn success(message: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 240 |     pub fn error(message: &str) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 248 |     pub fn with_data(mut self, data: serde_json::Value) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `timestamp` is never read
[INFO] [stderr]   --> src/metrics/mod.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub struct Metric {
[INFO] [stderr]    |            ------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub timestamp: i64,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Metric` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `inc_counter`, `set_gauge`, `observe_histogram`, and `make_key` are never used
[INFO] [stderr]    --> src/metrics/mod.rs:38:18
[INFO] [stderr]     |
[INFO] [stderr]  30 | impl MetricsCollector {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  38 |     pub async fn inc_counter(&self, name: &str, labels: Option<HashMap<String, String>>) {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  57 |     pub async fn set_gauge(&self, name: &str, value: f64, labels: Option<HashMap<String, String>>) {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  70 |     pub async fn observe_histogram(&self, name: &str, value: f64, labels: Option<HashMap<String, String>>) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 114 |     fn make_key(&self, name: &str, labels: &Option<HashMap<String, String>>) -> String {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/metrics/mod.rs:148:18
[INFO] [stderr]     |
[INFO] [stderr] 140 | impl AppMetrics {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub async fn record_request(&self, method: &str, path: &str, status: u16) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     pub async fn record_message(&self, channel: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     pub async fn record_tool(&self, tool: &str, success: bool) {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 175 |     pub async fn record_model(&self, model: &str, duration_ms: u64) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 181 |     pub async fn record_session(&self, channel: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 189 |     pub async fn set_active_connections(&self, count: u64) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 206 |     pub fn collector(&self) -> &MetricsCollector {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `session_id` is never read
[INFO] [stderr]   --> examples/client.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | struct ChatResponse {
[INFO] [stderr]    |        ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 19 |     session_id: String,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ChatResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `openclaw-rs` (bin "openclaw-rs" test) generated 285 warnings (26 duplicates) (run `cargo fix --bin "openclaw-rs" -p openclaw-rs --tests` to apply 28 suggestions)
[INFO] [stderr] warning: `openclaw-rs` (example "client") generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.76s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/openclaw_rs-fab1ba4f06895fb4)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test tests::tests::test_channel_webhook_parse ... ok
[INFO] [stdout] test tests::tests::test_acp_manager ... ok
[INFO] [stdout] test bootstrap::tests::test_empty_workspace ... ok
[INFO] [stdout] test bootstrap::tests::test_load_from_workspace ... ok
[INFO] [stdout] test storage::file_storage::tests::test_file_storage ... ok
[INFO] [stdout] test tests::tests::test_bootstrap_load ... ok
[INFO] [stdout] test tests::tests::test_tool_context ... ok
[INFO] [stdout] test tests::tests::test_config_default ... ok
[INFO] [stdout] test tests::tests::test_file_storage ... ok
[INFO] [stdout] test tests::tests::test_metrics_collector ... ok
[INFO] [stdout] test storage::file_storage::tests::test_nested_paths ... ok
[INFO] [stdout] test tests::tests::test_session_new ... ok
[INFO] [stdout] test tests::tests::test_gateway_state ... ok
[INFO] [stdout] test tests::tests::test_cron_scheduler ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/openclaw_rs-24fce78129329cc5)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stderr]    Doc-tests openclaw_rs
[INFO] [stdout] test bootstrap::tests::test_load_from_workspace ... ok
[INFO] [stdout] test bootstrap::tests::test_empty_workspace ... ok
[INFO] [stdout] test storage::file_storage::tests::test_file_storage ... ok
[INFO] [stdout] test storage::file_storage::tests::test_nested_paths ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "0e775f2df92ed948cae058aa1db7c49d96310a058953ec1a90355b3a929418ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0e775f2df92ed948cae058aa1db7c49d96310a058953ec1a90355b3a929418ad", kill_on_drop: false }`
[INFO] [stdout] 0e775f2df92ed948cae058aa1db7c49d96310a058953ec1a90355b3a929418ad
